我在尝试进行16字节块的原子加载时出现了连接错误。我有以下代码:
#include <atomic>
struct MyStruct{
long x; long y;
};
struct X{
std::atomic<MyStruct> myStruct;
};
int main(){
X x;
MyStruct s = atomic_load(&x.myStruct);
}
当我使用(g++版本5.3.1)编译此代码时:
g++ --std=c++11 test.cpp
我遇到了错误
/tmp/ccrvzLMq.o: In function `std::atomic<MyStruct>::load(std::memory_order) const':
test.cpp:(.text._ZNKSt6atomicI8MyStructE4loadESt12memory_order[_ZNKSt6atomicI8MyStructE4loadESt12memory_order]+0x1c): undefined reference to `__atomic_load_16'
collect2: error: ld returned 1 exit status
如果(在另一篇文章中的提示后)我添加了“-latomic”标志,我会收到错误信息“/bin/ld:找不到/usr/lib64/libatomic.so.1.1.0”。实际上,该文件确实不存在。
有什么建议吗?
Gavin
-march=native
选项? - Kerrek SB