我刚刚编译了GCC 4.7来使用stdatomic.h,但是我似乎不能-I它。stdatomic.h似乎位于/usr/include/c++/4.4.3中,但随后链接器告诉我,它需要在附近的目录中放置一堆其他文件。如果我对它们全部执行-I操作,我仍然会得到错误undefined reference to atomic_flag_clear_explicit。你知道我该怎么把它联系起来吗?
发布于 2012-03-30 04:11:17
首先,如果你是用GCC 4.7编译的,你不应该包含或链接任何来自GCC 4.4目录的东西。
其次,-I只影响头文件的搜索路径。“未定义的引用”是一个链接器错误,通常意味着它没有找到正确的库。您可以使用-L更改库搜索路径。链接器并没有说它没有找到一个具有正确名称的库,它说它没有找到一个符号,所以很明显它找到的库没有那个符号。我建议你有一个版本问题,可能是由安装问题引起的。
发布于 2013-02-16 22:55:28
GCC 4.4和4.5中的头来自C++0x原子公司的早期草案,但不是最终标准的一部分,因此从libstdc++中删除了它。
C++编译器通过C++11标头支持C++11原子,因此您应该在C++代码中使用该标头。
当C编译器支持C11原子时,将再次提供头。
发布于 2021-03-31 14:41:05
使用这个命令为我解决了这个问题:
$ scl enable devtoolset-7 bash在CentOS 7上安装Python3.8.5时,我在输入sudo make altinstall时遇到了与您相同的错误。
https://stackoverflow.com/questions/9918217
复制相似问题