2012-03-29 355 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>頭將被再次設置。