小编Gav*_*owe的帖子

C++未定义对`__atomic_load_16'的引用

在尝试对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);
}
Run Code Online (Sandbox Code Playgroud)

当我使用(g ++版本5.3.1)编译它时:

g++ --std=c++11 test.cpp
Run Code Online (Sandbox Code Playgroud)

我收到了错误

/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
Run Code Online (Sandbox Code Playgroud)

如果(在另一篇文章中提示)我添加"-latomic"标志,我得到错误"/ bin/ld:找不到/usr/lib64/libatomic.so.1.1.0".事实上,该文件并不存在.

有什么建议?

加文

c++ atomic

5
推荐指数
1
解决办法
2407
查看次数

标签 统计

atomic ×1

c++ ×1