2014-03-06 39 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