Si tratta di un follow-up a una precedente interrogazione sul cross-compilazione per l'iPhone:
Cross-compile Autotools-based Libraries for Official iPhone SDKCross-compilare Apache Portable Runtime per l'iPhone
In sostanza, sto cercando di compilare l'Apache Portable Runtime (APR) versione 1.3.8 (più recente) per l'iPhone. Sono attualmente in esecuzione nel seguente errore durante la fase di configurazione:
checking for working PROCESS_SHARED locks... configure: error: in `/Users/michaelsafyan/Downloads/apr-1.3.8': configure: error: cannot run test program while cross compiling See `config.log' for more details.
sto invocando lo script "configure" tramite "iphone3.1-configure --disable-DSO --enable-threads", dove "iphone3 .1-configure" è il seguente script che ho cucinato-up per invocare la 'configure script':
#! /bin/bash # # Program : iphone3.1-configure # Authors : Michael Aaron Safyan ([email protected]) # Synopsis : # This program runs the "configure" script generated by the # GNU Autotools in order to cross-compile thirdparty libraries # for the iPhone 3.1 SDK. Run this script while in a directory # containing an autotools "configure" script. Once you run this, # you can use "make" and "sudo make install" to build the library. # An install prefix of "/opt/iphone-3.1/" is used. # unset CPATH unset C_INCLUDE_PATH unset CPLUS_INCLUDE_PATH unset OBJC_INCLUDE_PATH unset LIBS unset DYLD_FALLBACK_LIBRARY_PATH unset DYLD_FALLBACK_FRAMEWORK_PATH export BUILD_DARWIN_VER=`uname -r` export SDKVER="3.1" export DEVROOT="/Developer/Platforms/iPhoneOS.platform/Developer" export SDKROOT="$DEVROOT/SDKs/iPhoneOS$SDKVER.sdk" export PKG_CONFIG_PATH=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS$SDKVER.sdk/usr/lib/pkgconfig:/Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/pkgconfig:/opt/iphone-$SDKVER/lib/pkgconfig:/usr/local/iphone-$SDKVER/lib/pkgconfig export PREFIX="/opt/iphone-$SDKVER" export AS="$DEVROOT/usr/bin/as" export ASCPP="$DEVROOT/usr/bin/as" export AR="$DEVROOT/usr/bin/ar" export RANLIB="$DEVROOT/usr/bin/ranlib" export CPPFLAGS="-pipe -no-cpp-precomp -I$SDKROOT/usr/lib/gcc/arm-apple-darwin9/4.2.1/include/ -I$SDKROOT/usr/include -I$DEVROOT/usr/include -I/opt/iphone-$SDKVER/include -I/usr/local/iphone-$SDKVER/include" export CFLAGS="-std=c99 -arch armv6 -pipe -no-cpp-precomp --sysroot='$SDKROOT' -isystem $SDKROOT/usr/lib/gcc/arm-apple-darwin9/4.2.1/include/ -isystem $SDKROOT/usr/include -isystem $DEVROOT/usr/include -isystem /opt/iphone-$SDKVER/include -isystem /usr/local/iphone-$SDKVER/include" export CXXFLAGS="-std=c99 -arch armv6 -pipe -no-cpp-precomp --sysroot='$SDKROOT' -isystem $SDKROOT/usr/lib/gcc/arm-apple-darwin9/4.2.1/include/ -isystem $SDKROOT/usr/include -isystem $DEVROOT/usr/include -isystem /opt/iphone-$SDKVER/include -isystem /usr/local/iphone-$SDKVER/include" export LDFLAGS="-arch armv6 --sysroot='$SDKROOT' -L$SDKROOT/usr/lib -L$DEVROOT/usr/lib -L/opt/iphone-$SDKVER/lib -L/usr/local/iphone-$SDKVER/lib" export CPP="$DEVROOT/usr/bin/cpp" export CXXCPP="$DEVROOT/usr/bin/cpp" export CC="$DEVROOT/usr/bin/gcc-4.2" export CXX="$DEVROOT/usr/bin/g++-4.2" export LD="$DEVROOT/usr/bin/ld" export STRIP="$DEVROOT/usr/bin/strip" if [ ! \(-d "$DEVROOT" \) ] ; then echo "The iPhone SDK could not be found. Folder \"$DEVROOT\" does not exist." exit 1 fi if [ ! \(-d "$SDKROOT" \) ] ; then echo "The iPhone SDK could not be found. Folder \"$SDKROOT\" does not exist." exit 1 fi ./configure --prefix="$PREFIX" --build="i386-apple-darwin$BUILD_DARWIN_VER" --host="arm-apple-darwin9" --enable-static --disable-shared ac_cv_file__dev_zero=no ac_cv_func_setpgrp_void=yes [email protected]
l'errore che configurano mi sta dando non è la prima volta che ho ricevuto un messaggio lungo il le righe di "impossibile eseguire il programma di test durante la compilazione incrociata". In effetti, gli elementi "ac_cv_file__dev_zero = no" e "ac_cv_func_setpgrp_void = yes" nello script "iphone3.1-configure" causano l'esclusione di due test analoghi non funzionanti. Il problema che sto avendo è che non so come bypassare questo controllo - cioè, non so quale variabile (s) impostare per bypassare questo test e qualsiasi test aggiuntivo che tenta di eseguire gli eseguibili creati per il target piattaforma. Sono stato in grado di aggirare i primi due test simili semplicemente perché ero in grado di individuare la soluzione alternativa su Google ... qualcuno sa quali variabili impostare o un altro modo per aggirare questo controllo?
Se qualcuno conosce un modo per sopprimere tutti i test che non possono essere eseguiti durante la compilazione incrociata, o se si sa solo come sopprimere questo controllo specifico, sarei molto grato. Grazie mille.
Salve, il collegamento a "Compilare a croce la Rotaime portatile Apache per l'iphone". è rotta. – Seunghoon
Sì, l'ho cancellato. –
Grazie per aver aggiunto questa risposta. Mi ha reso la vita molto più semplice mentre eseguivo un cross-building APR per una piattaforma QNX. Sembra che cinque anni dopo uno abbia ancora gli stessi parametri di configurazione. – MayaPosch