在我目前正在处理的Xcode项目中,我正在使用带有Apple LLVM 4.2(clang)编译器的C ++ 11,并使用libstdc ++作为我的标准库,因为我使用的是未编译的库(NTL)使用libc ++,所以我必须使用libstdc ++。
编写以下代码时:
#include <regex>
int main()
{
return 0;
}
它没有编译,说:
'regex' file not found
所以我不能在我的libstdc ++中使用任何C ++ 11库(试过<mutex>
,<thread>
)。
我试图采用的另一种方法是使用cc和libc ++重新编译NTL
,但这似乎没什么用。以下是产生的一些错误:
../include/NTL/config.h:57:5: error: expected value in expression
#if
^
../include/NTL/config.h:88:5: error: expected value in expression
#if
^
../include/NTL/config.h:95:5: error: expected value in expression
#if
^
../include/NTL/config.h:112:5: error: expected value in expression
#if
^
../include/NTL/config.h:120:5: error: expected value in expression
#if
^
../include/NTL/config.h:143:7: error: expected value in expression
#elif
^
../include/NTL/config.h:168:5: error: expected value in expression
#if
^
../include/NTL/config.h:189:5: error: expected value in expression
#if
^
../include/NTL/config.h:208:5: error: expected value in expression
#if
^
../include/NTL/config.h:226:5: error: expected value in expression
#if
^
../include/NTL/config.h:248:5: error: expected value in expression
#if
^
../include/NTL/config.h:260:5: error: expected value in expression
#if
^
../include/NTL/config.h:273:5: error: expected value in expression
#if
^
../include/NTL/config.h:289:5: error: expected value in expression
#if
^
../include/NTL/config.h:309:5: error: expected value in expression
#if
^
../include/NTL/config.h:326:7: error: expected value in expression
#elif
^
In file included from FFT.c:3:
In file included from ../include/NTL/FFT.h:6:
In file included from ../include/NTL/ZZ.h:19:
../include/NTL/tools.h:21:10: fatal error: 'iostream.h' file not found`
似乎配置标头以某种方式“损坏”并且libc ++没有<iostream.h>
和旧的c ++标头。因此,重新编译NTL
对我来说有点麻烦。
所以,我该如何解决?我怎样才能在我的项目中使用libstdc ++并拥有C ++ 11库?如果这有帮助,我用brew安装了g ++ - 4.8。有没有办法将clang使用的libstdc ++映射到新的?
答案 0 :(得分:2)
您需要告诉clang的副本如何找到您要使用的libstdc ++标头。显然它没有找到它们。我认为你想要的标志是"-nostdinc -I /path/to/better/headers"
。
第一部分告诉clang不要使用它的标准头文件,第二部分告诉它在“那边”寻找标题。