1 编译错误
最近在linux下写程序时使用标准库std::atomic,其中使用到is_lock_free,链接时提示找不到__atomic_is_lock_free函数。
/usr/bin/ld: /mnt/e/git/cpp/test/cpptest/concurrent/.obj/atomic_test.o: in function `std::atomic<ObjectA>::is_lock_free() const':
atomic_test.cpp:(.text._ZNKSt6atomicI7ObjectAE12is_lock_freeEv[_ZNKSt6atomicI7ObjectAE12is_lock_freeEv]+0x1d): undefined reference to `__atomic_is_lock_free'
collect2: error: ld returned 1 exit status
2 解决
在连接选项增加-latomic
LINKFLAGS := -latomic
3 总结
看来标准库std::atomic的实现,除部分在头文件实现外,还有部分在库文件中实现。