除了我使用的是英特尔版本 12.1.3 之外,我遇到了与这篇文章中描述的相同的问题。(g++
的标头<functional>
受到保护,#ifdef __GXX_EXPERIMENTAL_CXX0X__
使用 icpc 时未定义。)
而不是 using boost::functional
,我想安装 gcc4.7 并使用它的标准库。
在 Ubuntu 11.10 我有gcc4.6.1
,但我也gcc4.7
从gcc-snapshot
包中安装。
英特尔有选项-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 版。有人知道如何让英特尔使用正确的库吗?