Kompilieren Sie Apache Portable Runtime auf das iPhone

Dies ist eine Folge einer früheren Frage zum Cross-Compilieren für das iPhone:
Kompilieren Sie autotoolbasierte Bibliotheken für das offizielle iPhone SDK

Grundsätzlich versuche ich, die Apache Portable Runtime (APR) Version 1.3.8 (aktuell) für das iPhone zu kompilieren. Während des Konfigurationsschritts tritt momentan der folgende Fehler auf:

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.

Ich rufe das "configure" -Skript über "iphone3.1-configure --disable-dso --enable-threads" auf, wobei "iphone3.1-configure" das folgende Skript ist, das ich zum Aufrufen des " configure "-Skript:

#! /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 $@

Der Fehler, den configure ausgibt, ist nicht das erste Mal, dass ich die Meldung "Testprogramm kann beim Cross-Compilieren nicht ausgeführt werden" erhalten habe. Tatsächlich führen die Elemente "ac_cv_file__dev_zero = no" und "ac_cv_func_setpgrp_void = yes" im Skript "iphone3.1-configure" dazu, dass zwei ähnlich fehlgeschlagene Tests umgangen werden. Das Problem, das ich habe, ist, dass ich nicht weiß, wie ich diese Überprüfung umgehen soll - das heißt, ich weiß nicht, welche Variablen festgelegt werden müssen, um diesen Test und alle zusätzlichen Tests zu umgehen, die versuchen, für das Ziel erstellte ausführbare Dateien auszuführen Plattform. Ich konnte die früheren beiden ähnlichen Tests einfach umgehen, weil ich die Problemumgehung bei Google finden konnte. Weiß jemand, welche Variablen festgelegt werden müssen oder auf eine andere Weise, um diese Prüfung zu umgehen?

Wenn jemand eine Möglichkeit kennt, alle Tests zu unterdrücken, die beim Cross-Compilieren nicht ausgeführt werden können, oder wenn Sie nur wissen, wie man diese spezifische Prüfung unterdrückt, wäre ich sehr dankbar. Vielen Dank.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage