настройка: ошибка: препроцессор C не проходит проверку на вменяемость


Я компилирую несколько библиотек на 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)

Что здесь может быть не так?

3 4

3 ответа:

Проблема может заключаться в том, что GNU делает неявную переменную, которая обозначает "ваш компилятор C++" не CPP, а CXX, тогда как CPP является неявная переменная, которая обозначает "ваш препроцессор C"; так что ваш

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

Сообщает configure, что icpc является препроцессором и оставляет CXX предположительно по умолчанию используется g++.

Это подтверждается ошибкой ./configure:

Проверка того, как запустить препроцессор C... /опт/Интел/composer_xe_2013.2.146/ОГРН/intel64/МКПП

Попробуйте:

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

Или просто:

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

FWIW, я столкнулся с этим сегодня, и мое решение было

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

То есть сказать configure, что препроцессор должен быть запущен с флагом -E.

Спасибо менно, в моем случае экспорт не совсем это сделал, но это было близко. Прохождение 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'