9

我正在 Ubuntu 12.04 x86_64 上编译几个库。首先,我用 GCC 4.7.2 编译了库,一切顺利。然后我尝试使用 Inte Composer 2013 u2 重新编译它们。为了这个目的,我做了:

export CC=/opt/intel/composer_xe_2013.2.146/bin/intel64/icc
export CPP=/opt/intel/composer_xe_2013.2.146/bin/intel64/icpc

然后我运行./configure并收到以下错误:

checking how to run the C preprocessor... /opt/intel/composer_xe_2013.2.146/bin/intel64/icpc
configure: error: in `/var/www/workspace/freetype/freetype-2.4.11/builds/unix':
configure: error: C preprocessor "/opt/intel/composer_xe_2013.2.146/bin/intel64/icpc" fails sanity check
See `config.log' for more details
make: *** [setup] Error 1

配置日志文件包含此错误:

configure:3345: checking how to run the C preprocessor
configure:3415: result: /opt/intel/composer_xe_2013.2.146/bin/intel64/icpc
configure:3435: /opt/intel/composer_xe_2013.2.146/bin/intel64/icpc  conftest.c
conftest.c(14): error: identifier "Syntax" is undefined
             Syntax error
             ^

conftest.c(14): error: expected a ";"

compilation aborted for conftest.c (code 2)

configure:3435: $? = 2
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "FreeType"
| #define PACKAGE_TARNAME "freetype"
| #define PACKAGE_VERSION "2.4.11"
| #define PACKAGE_STRING "FreeType 2.4.11"
| #define PACKAGE_BUGREPORT "freetype@nongnu.org"
| #define PACKAGE_URL ""
| /* end confdefs.h.  */
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
|            Syntax error
configure:3435: /opt/intel/composer_xe_2013.2.146/bin/intel64/icpc  conftest.c
conftest.c(14): error: identifier "Syntax" is undefined
             Syntax error
             ^

conftest.c(14): error: expected a ";"

compilation aborted for conftest.c (code 2)

这里有什么问题?

4

3 回答 3

16

问题很可能是表示“你的 C++ 编译器”的 GNU make 隐式变量不是CPPbut CXX,而CPP表示“你的 C 预处理器”的隐式变量是;所以你的

export CPP=/opt/intel/composer_xe_2013.2.146/bin/intel64/icpc

告诉configureicpc 是预处理器,并且CXX可能默认为 g++。

错误支持这一点./configure

检查如何运行 C 预处理器... /opt/intel/composer_xe_2013.2.146/bin/intel64/icpc

尝试:

export CXX=/opt/intel/composer_xe_2013.2.146/bin/intel64/icpc

要不就:

./configure CXX=/opt/intel/composer_xe_2013.2.146/bin/intel64/icpc
于 2013-02-27T22:40:39.733 回答
9

FWIW,我今天遇到了这个问题,我的解决方案是

export CPP='<path to icpc> -E'

也就是说,告诉 configure 预处理器应该与-E标志一起运行。

于 2015-08-05T10:41:00.107 回答
3

谢谢 Menno,在我的情况下,出口并没有完全做到这一点,但它已经接近了。通过 CPP=... 进行配置就可以了:

mkdir build
cd build
../configure --prefix=/usr/local/gcc/ CC=/usr/local/gcc/bin/gcc \
 CXX=/usr/local/gcc/bin/g++ CPP='/usr/local/gcc/bin/g++ -E'
于 2016-08-11T06:30:26.843 回答