2013-11-03 50 views
4

我想在OS X 10.9上編譯一些舊的第三方軟件。我設法通過調整Makefile中的設置來解決大多數編譯問題,最初編寫的代碼爲gcc大概在2005年左右。但是,我目前不知道如何克服C++源文件的這個錯誤:在OS X上找不到'ext/slist'文件10.9

/utility.h:42:10: fatal error: 'ext/slist' file not found

據我所知,ext/slist屬於某個版本的STL。對於Apple版本的Clang/LLVM(對於OS X 10.9爲5.0),該版本是否已被取代或是否需要以任何特殊方式激活?

如果可能的話,我寧願用預裝的工具編譯這個軟件,而不會通過安裝gcc via MacPorts這樣的步驟。

順便說一句,這些警告也堅持:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_set:202:2: warning: Use of the header is deprecated. Migrate to [-W#warnings] /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_map:209:2: warning: Use of the header is deprecated. Migrate to [-W#warnings]

回答

5

SLIST是一個單向鏈表,並被列入的libstdC++的推廣。 Mac OS X已經從libstdC++轉向了提供C++ 11標準庫的libC++。 C++ 11在標頭<forward_list>的名稱std :: forward_list下提供了一個單鏈表。

我相信libstdC++仍然包含在開發者工具中,所以你也可以將你的項目切換回來。如果您使用的是Xcode項目,則可以在構建設置中選擇庫,或者確保程序使用-stdlib = libstdC++構建。

+1

謝謝,'-stdlib = libstdC++'解決了這個問題。我現在正在收到其他錯誤,例如:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/memory: 222:7:注意:候選函數不可行:沒有已知的從'tree *'(aka'tree_node <> *')轉換爲'std :: auto_ptr ...「的結果。是否必須要調整包含路徑以反映較舊的庫,以及 – Drux

+1

不,這個錯誤是指較舊的庫。該錯誤似乎是新編譯器和舊編譯器之間的差異的結果 – bames53

+0

因此,看起來好像較新的,[嚴格](http://stackoverflow.com/questions/12779630/conversion-to-const-y-not-applicable-for-r-on-clang)編譯器不再接受舊庫中的頭文件,也無需安裝(MacPorts | brew)&gcc我卡住了...... – Drux

相關問題