2011-12-12 5 views
9

He estado haciendo una gran cantidad de compilación cruzada de diferentes bibliotecas para iOS y hasta iOS5 no hubo ningún problema. Ok, aparentemente mi problema es que el SDK iOS5 ya no incluye el compilador GNU gcc. Solo llvm y clang están disponibles.iOS Compiling (armv7, i386) de varias libs. Configurar secuencia de comandos: el preprocesador C falla el control de cordura

Mi problema es que no puedo terminar de ejecutar el script 'configure' de ninguna biblioteca. Siempre falla con:

configure: error: C preprocessor 
"/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc" fails sanity check 

gcc solo es un enlace simbólico al compilador llvm. Si configuro el clang, produce el mismo error. (Sólo con una representación error de sintaxis más agradable)

Aquí la parte importante de config.log:

configure:3338: checking how to recognise dependent libraries 
configure:3514: result: pass_all 
configure:3993: checking how to run the C preprocessor 
configure:4111: result: /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc 
configure:4135: /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -B/Developer/Platforms/iPhoneOS.platform/Developer/usr -arch armv7 -miphoneos-version-min=5.0 -gdwarf-2 -mthumb -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/system conftest.c 
conftest.c:14: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'error' 
configure:4141: $? = 1 
configure: failed program was: 
| /* confdefs.h. */ 
| 
| #define PACKAGE_NAME "expat" 
| #define PACKAGE_TARNAME "expat" 
| #define PACKAGE_VERSION "2.0.1" 
| #define PACKAGE_STRING "expat 2.0.1" 
| #define PACKAGE_BUGREPORT "[email protected]" 
| /* end confdefs.h. */ 
| #ifdef __STDC__ 
| # include <limits.h> 
| #else 
| # include <assert.h> 
| #endif 
|   Syntax error 
configure:4135: /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -B/Developer/Platforms/iPhoneOS.platform/Developer/usr -arch armv7 -miphoneos-version-min=5.0 -gdwarf-2 -mthumb -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/system conftest.c 
conftest.c:14: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'error' 
configure:4141: $? = 1 
configure: failed program was: 
| /* confdefs.h. */ 
| 
| #define PACKAGE_NAME "expat" 
| #define PACKAGE_TARNAME "expat" 
| #define PACKAGE_VERSION "2.0.1" 
| #define PACKAGE_STRING "expat 2.0.1" 
| #define PACKAGE_BUGREPORT "[email protected]" 
| /* end confdefs.h. */ 
| #ifdef __STDC__ 
| # include <limits.h> 
| #else 
| # include <assert.h> 
| #endif 
|   Syntax error 
configure:4210: error: C preprocessor "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc" fails sanity check 
See `config.log' for more details. 

Aquí es mi medio ambiente. Un poco exagerado, pero funcionó bien con iOS4.X.

# Defines 
DEVROOT=/Developer/Platforms/iPhoneOS.platform/Developer 
SDKROOT=$DEVROOT/SDKs/iPhoneOS5.0.sdk 

# BUILD STUFF 
export CXXFLAGS="-B/Developer/Platforms/iPhoneOS.platform/Developer/usr -arch armv7 -miphoneos-version-min=5.0 -gdwarf-2 -mthumb -isysroot $SDKROOT -L$SDKROOT/usr/lib/system" 
export CPPFLAGS="$CXXFLAGS" 
export CFLAGS="$CXXFLAGS" 
export CPP=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc 
export CXXCPP=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++ 
#export CXX=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++ 
export CC=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc 
export LD=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ld 
export RANLIB=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ranlib 
export AR=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar 
export STRIP=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/strip 
export LIBTOOL=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool 
export INSTALL_DIR=/Users/mriedel/MPI/CrossCompiling/armv7_dev_install 
export CPATH=$INSTALL_DIR/include 
export LIBRARY_PATH=$INSTALL_DIR/lib 

He estado tratando de resolver esto durante semanas, pero no tuve suerte. Siento que otras personas deben haber encontrado este problema. Pero Google no mencionó nada. Por un tiempo, traté de usar el gas-preprocessor.pl, pero también sin suerte.

Ah, mis llamadas configure está siempre similar a esto:

./configure --prefix=$INSTALL_DIR --disable-shared --enable-static --host=arm-apple-darwin 

Quiero señalar que este problema exacto que sucede con todas mis bibliotecas que utilizan configurar scripts. Por nombrar algunos: apr, apr-util, expat, log4cxx, etc. Ni siquiera estoy seguro de cuál será el resultado deseado. Solo hay un "error de sintaxis" extrañamente colocado en el medio del código. No es de extrañar que no compile :).

La ayuda y sugerencias sobre cómo proceder serían muy apreciadas. Gracias.

+0

OK si agrego ''E' manualmente a la llamada gcc que arroja el error, en realidad puedo saltear este error. Pero luego se encuentra con el siguiente :) – rado0x54

Respuesta

13

Me encontré con el mismo problema. Después de algunos intentos, mi problema resultó ser que estaba configurando CPP explícitamente. No configure eso (y de hecho, 'desactívelo' si está configurado). Si no está configurado, configure try $CC -E de forma predeterminada. Si es conjunto, configure no agrega el -E automáticamente. Además, la configuración de CPPFLAGS a -E no funciona, porque estos indicadores también se pasan a otros pasos.

+1

Perfecto. Tuve que deshacer CPP y CPPFlags. Gracias a un millón, está funcionando bien ahora. – rado0x54

+0

Entonces, ¿cómo el sistema qué compilador usar (porque está compilando de forma cruzada)? Tal vez me estoy perdiendo algo aquí? – mfcabrera

Cuestiones relacionadas