2014-03-06 80 views
3

讓clang ++使用GCC的libstdC++(-stdlib=stdc++)很容易,但我該怎麼做相反的?在OS X Mavericks上,C++系統庫是libC++,這意味着基本上libstdC++不能使用(如果您與其他C++庫混合使用,例如使用libC++編譯的boost)。所以,粗略地說,這意味着G ++不可用...除非我可以要求它使用libC++而不是libstdC++。使用g ++與libC++

謝謝。

我使用的腳本(EDIT)

我用下面的腳本,g++-libc++,運行G ++上的libC++頂部,在Mac OS X與MacPorts的(因此-mp名。

#! /bin/sh 

clangxx=clang++-mp-3.5 
gxx=g++-mp-4.9 

libcxx_includes=$($clangxx -print-search-dirs | 
        perl -ne 's{^libraries: =(.*)}{$1/../../../} && print') 

exec $gxx -std=c++11 \ 
    -isystem ${libcxx_includes}/include/c++/v1 \ 
    -nostdinc++ -nodefaultlibs \ 
    -lc -lc++ -lc++abi -lgcc_s.10.5 \ 
    -Wl,-no_compact_unwind \ 
    "[email protected]" 
+1

只是傳遞正確-I(或-isystem),-L和-l標誌...... –

回答

4

喜歡的東西:

g++ -std=c++0x -nostdinc++ -nodefaultlibs -lc -isystem <path_to>/include/c++/v1 -lc++ -lc++abi -lgcc_s.10.5

+0

在Linux上,它編譯'libC++ abi'相當具有挑戰性。不過,用'-lsupC++'代替'-lC++ abi'對我很有用。 – Benno