我刚刚编译GCC 4.7以使用stdatomic.h
,但我似乎无法-I
。 stdatomic.h
似乎住在/usr/include/c++/4.4.3
,但是链接器告诉我它需要附近的一堆其他文件。如果我-I
全部,我仍然会收到错误undefined reference to atomic_flag_clear_explicit
。任何想法我应该如何链接这个?
答案 0 :(得分:2)
首先,如果您使用GCC 4.7进行编译,则不应在GCC 4.4的目录中包含或链接任何。
其次,-I
仅影响头文件的搜索路径。 "未定义参考"是一个链接器错误,通常意味着它没有找到合适的库。您使用-L
更改库搜索路径。链接器没有说它没有找到一个具有正确名称的库,它说它没有找到符号,所以很明显它找到的库没有那个符号。我建议您有版本问题,可能是由安装问题引起的。
答案 1 :(得分:2)
< stdatomic.h> GCC 4.4和4.5中的标题来自C ++ 0x atomics的早期草案,但不是最终标准的一部分,因此它已从libstdc ++中删除。
C ++编译器通过C ++ 11< atomic>支持C ++ 11原子。标题,所以你应该在C ++代码中使用那个标题。
当C编译器支持C11原子时,< stdatomic.h>标题将再次提供。
答案 2 :(得分:0)
使用此命令为我解决了问题:
.list-group
我在 CentOS 7 上输入 $ scl enable devtoolset-7 bash
安装 Python 3.8.5 时遇到和你一样的错误。