2011-12-12 11 views
9

Ho eseguito molte compilazioni incrociate di librerie diverse per iOS e fino a iOS 5 non ci sono stati problemi. Ok, a quanto pare il mio problema è che l'SDK di iOS5 non include più il compilatore GNU gcc. Sono disponibili solo llvm e clang.Compilazione iOS (armv7, i386) di diverse librerie. Configura script: il preprocessore C fallisce il controllo di integrità

Il mio problema è che non riesco a finire di eseguire lo script 'configure' di nessuna libreria. Fallisce sempre con:

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

gcc è solo un collegamento simbolico al compilatore llvm. Se lo metto a clang, produce lo stesso errore. (Solo con una rappresentazione errore di sintassi più bello)

Ecco la parte importante di 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. 

Ecco il mio ambiente. Un po 'eccessivo, ma ha funzionato bene 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 

Ho cercato di capirlo per settimane, ma senza fortuna. Sento che altre persone devono aver incontrato questo problema. Ma Google non ha portato nulla. Per un po ', ho provato a usare il gas-preprocessor.pl, ma anche senza fortuna.

Ah, le mie chiamate di configurazione sono sempre simile a questo:

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

Voglio sottolineare che questo problema esatto accade con tutte le mie librerie che utilizzano configurare scrips. Per citarne alcuni: apr, apr-util, expat, log4cxx ecc ... Non sono nemmeno sicuro di quale dovrebbe essere l'output desiderato. C'è solo un "Errore di sintassi" nel mezzo del codice. Nessuna meraviglia che non compili :).

Guida e suggerimenti su come procedere sarebbero molto apprezzati. Grazie.

+0

OK se aggiungo '-E' manualmente alla chiamata gcc che genera l'errore Sono effettivamente in grado di ignorare questo errore. Ma poi si imbatte nel prossimo :). – rado0x54

risposta

13

Ho incontrato lo stesso problema. Dopo alcuni tentativi, il mio problema è stato che stavo impostando CPP in modo esplicito. Non impostarlo (e infatti, "disassociarlo" se è impostato). Se non è impostato, configura i tentativi $CC -E per impostazione predefinita. Se è impostato , configure non aggiunge automaticamente lo -E. Inoltre, l'impostazione di CPPFLAGS a -E non funziona, poiché questi flag vengono anche passati ad altri passaggi.

+1

Perfetto. Ho dovuto disinserire CPP e CPPFlags. Grazie mille, sta funzionando bene ora. – rado0x54

+0

Così come il sistema che usa il compilatore (perché si esegue una compilazione incrociata)? Forse mi manca qualcosa qui? – mfcabrera

Problemi correlati