除了我使用的是英特尔12.1.3版本之外,我在this post中也遇到了同样的问题。(g++的报头<functional>由使用icpc时未定义的#ifdef __GXX_EXPERIMENTAL_CXX0X__保护。)
我想安装gcc4.7并使用它的std库,而不是使用boost::functional。
在Ubuntu11.10中,我安装了gcc4.6.1,但我也从gcc-snapshot包安装了gcc4.7。
英特尔提供-gcc-name、-gxx-name和-cxxlib选项。因此,最初我使用以下命令进行编译:
-std=c++0x -gcc-name=/usr/lib/gcc-snapshot/bin/gcc -gxx-name=/usr/lib/gcc-snapshot/bin/g++ -cxxlib=/usr/lib/gcc-snapshot/
但是我得到了一个错误:
icpc: error #10282: file '/usr/lib/gcc-snapshot/bin/usr/lib/gcc-snapshot/bin/g++' not found, generated based on '-cxxlib=/usr/lib/gcc-snapshot/'
因此,我使用以下命令进行编译:
-std=c++0x -gcc-name=./gcc -gxx-name=./g++ -cxxlib=/usr/lib/gcc-snapshot/。
但我仍然收到警告和错误:
Warning #2928: the __GXX_EXPERIMENTAL_CXX0X__ macro is disabled when using GNU version 4.6 with the c++0x option
error: namespace "std" has no member "function"
该警告清楚地表明它仍在使用4.6版。有人知道如何让英特尔使用正确的库吗?
发布于 2012-04-17 08:38:59
我发现如果你用带有标志-v -Q的gcc (或g++)编译,你会得到一个标志和定义的列表。它可能会帮助你了解gcc是做什么的,所以也许你可以在icpc中使用相同的-D/-U。此外,g++ -E无需编译即可进行预处理:您可以从中获取有用的路径信息。
https://stackoverflow.com/questions/10179832
复制相似问题