configure:error:C预处理器无法进行健全性检查

Reg*_*00x 4 linux compiler-errors configure icc

我正在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
Run Code Online (Sandbox Code Playgroud)

然后我运行./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
Run Code Online (Sandbox Code Playgroud)

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

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)
Run Code Online (Sandbox Code Playgroud)

这可能有什么不对?

Mik*_*han 11

这个问题可能是,在GNU做出表示隐变量"C++编译器"不是CPP但是CXX,而CPP是表示"你的C预处理器"的隐含变量; 所以你的

export CPP=/opt/intel/composer_xe_2013.2.146/bin/intel64/icpc
Run Code Online (Sandbox Code Playgroud)

告诉configure我icpc是预处理器,并且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
Run Code Online (Sandbox Code Playgroud)

要不就:

./configure CXX=/opt/intel/composer_xe_2013.2.146/bin/intel64/icpc
Run Code Online (Sandbox Code Playgroud)


Men*_*ijk 6

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

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

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