2012-03-29 357 views
2

我刚刚编译GCC 4.7与stdatomic.h工作,但我似乎无法给-I它。 stdatomic.h似乎生活在/usr/include/c++/4.4.3,但然后链接器告诉我它需要在附近的一堆其他文件。如果我-I所有人,我仍然得到错误undefined reference to atomic_flag_clear_explicit。任何想法我应该如何链接这个权利?GCC 4.7,其中包括<stdatomic.h>

+0

4.7源代码包是否还附带4.7 libstdC++? – 2012-03-29 02:18:02

+0

哦,我明白了,你的意思是我可能会链接到错误的包含?让我看看。 – 2012-03-29 02:21:01

+0

@ K.G。 ''是标准C,而不是C++。 – 2012-03-29 05:43:26

回答

2

首先,如果您正在编译GCC 4.7,您不应该在GCC 4.4的目录中包含或链接什么

其次,-I只会影响的头文件的搜索路径。 “未定义的引用”是一个链接器错误,通常意味着它没有找到合适的库。您可以用-L更改图书馆搜索路径。链接器没有说它没有找到一个名称正确的库,它说它没有找到一个符号,很明显它找到的库没有这个符号。我建议你有一个版本问题,可能是由安装问题引起的。

2

< GCC 4.4和4.5中的stdatomic.h>头文件来自早期的C++ 0x原子草案,但不是最终标准的一部分,因此它已从libstdC++中移除。

C++编译器支持通过C++ 11 <原子>头C++ 11个原子学,因此应使用该标头中的C++代码。

当C编译器支持C11原子学,所述< stdatomic.h>头将被再次设置。