以前,使用AppleLLVM9.1.0,128位结构上的is_lock_free()已经返回true。为了获得完整的std::optional支持,我随后升级到MacPorts gcc 7.3。在我第一次尝试编译时,我遇到了一个臭名昭著的显示停止链接器错误:
Undefined symbols for architecture x86_64:
"___atomic_compare_exchange_16", referenced from:我知道我可能需要添加-latomic。使用Apple 9.1.0,我不需要它,而且我对此有很坏的预感。如果它是无锁的,通常不需要链接到任何附加的库,只有编译器才能处理它。否则,它可能只是基于锁的,并需要其他库的支持。正如我所担心的,在添加-latomic之后,构建成功了,但是is_lock_free()返回false。
我确实认为gcc 7.3和它的标准库的实现是好的。这可能只是我这边的一些配置问题。事实上,我没有做任何配置。我只是简单地安装了MacPorts gcc并完成了。知道我可能错过了什么吗?
https://stackoverflow.com/questions/49816855
复制相似问题