Kompilieren Sie libgcrypt für das iPhone? Linker-Fehler ... kann anscheinend "fwrite" und "strerror" nicht finden?

Ich habe erfolgreichCross-Compilierung der Apache Portable Runtime (APR) für das iPhoneunter Verwendung eines Satzes vonSkripte konfigurieren das ruft die GNU Autotools "./configure" mit den erforderlichen Optionen für die Kompilierung auf.

Ich versuche jetzt, GNUTLS zu kompilieren, was von libtasn1 und von libgcrypt abhängt, was wiederum von libgpg-error abhängt. Hier gerate ich in Schwierigkeiten und könnte Ihre Hilfe gebrauchen ...

Ich versuche gerade, libgpg-error zu kompilieren. Die zuvor verwendeten Konfigurationsskripte funktionieren einwandfrei. Der Prozess "./configure" wird ordnungsgemäß abgeschlossen. Die Probleme treten auf, wenn ich "make" starte. Wenn ich make starte, scheint alles zu kompilieren, aber am Ende erhalte ich den folgenden bösen Linker-Fehler:

/bin/sh ../libtool --tag=CC   --mode=link /Users/michaelsafyan/Downloads/libgpg-error-1.7/compile /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2  -std=c99 -arch armv6 -pipe -no-cpp-precomp --sysroot='/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk' -isystem /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/usr/lib/gcc/arm-apple-darwin9/4.2.1/include/ -isystem /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/usr/include -isystem /Developer/Platforms/iPhoneOS.platform/Developer/usr/include -isystem /opt/iphone-3.0/include -isystem /usr/local/iphone-3.0/include  -arch armv6 --sysroot='/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk' -L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/usr/lib -L/Developer/Platforms/iPhoneOS.platform/Developer/usr/lib -L/opt/iphone-3.0/lib -L/usr/local/iphone-3.0/lib -o gpg-error gpg_error-strsource-sym.o gpg_error-strerror-sym.o gpg_error-gpg-error.o  ./libgpg-error.la  
/Users/michaelsafyan/Downloads/libgpg-error-1.7/compile /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -std=c99 -arch armv6 -pipe -no-cpp-precomp --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk -isystem /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/usr/lib/gcc/arm-apple-darwin9/4.2.1/include/ -isystem /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/usr/include -isystem /Developer/Platforms/iPhoneOS.platform/Developer/usr/include -isystem /opt/iphone-3.0/include -isystem /usr/local/iphone-3.0/include -arch armv6 --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk -o gpg-error gpg_error-strsource-sym.o gpg_error-strerror-sym.o gpg_error-gpg-error.o  -L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/usr/lib -L/Developer/Platforms/iPhoneOS.platform/Developer/usr/lib -L/opt/iphone-3.0/lib -L/usr/local/iphone-3.0/lib ./.libs/libgpg-error.a
Undefined symbols:
  "_fwrite$UNIX2003", referenced from:
      _main in gpg_error-gpg-error.o
  "_strerror$UNIX2003", referenced from:
      _gpg_strerror in libgpg-error.a(libgpg_error_la-strerror.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[3]: *** [gpg-error] Error 1
make[2]: *** [all] Error 2
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Irgendwelche Ideen, wie man das zum Laufen bringt? Die Versionen der Software, die ich kompiliere, sind:

libgpg-Fehler: 1.7libgcrypt: 1.4.4libtasn1: 2.2Nüsse: 2.8.4

Bitte helfen Sie. Vielen Dank.

Aktualisieren

Gemäß dem ersten Feedback verfügt jedes SDK über eine Kopie von "libSystem.dylib" in "$ SDKROOT / usr / lib". Es gibt keine Kopie von libSystem in "$ DEVROOT / usr / lib", wobei:

$ DEVROOT = "/Developer/Platforms/iPhoneOS.platform/Developer"$ SDKROOT = "$ DEVROOT / SDKs / iPhoneOS $ VER.sdk"

Die "libSystem" -Bibliotheken enthalten die normalen, nicht dekorierten Versionen jedes Symbols, enthalten jedoch nicht die "$ UNIX2003" -Varianten der Symbole. Ich vermute, dass GPG-ERROR "_POSIX_C_SOURCE", "_UNIX" oder ein anderes UNIX-Funktionstestmakro definiert und dass ein Rogue-Header, der "$ UNIX2003" an die Funktionen anfügt, wenn diese Funktionstestmakros vorhanden sind, enthalten ist. Das Entfernen von "$ DEVROOT / usr / include" aus der Liste der Include-Verzeichnisse hat keine Auswirkungen auf das Entfernen dieser Fehlermeldung.

Als letzte Möglichkeit sehe ich, dass "ld" eine Option "-alias_list" akzeptiert, mit der man eine Datei mit Einträgen wie "_fwrite _fwrite $ UNIX2003" angeben kann, um diese undefinierten Symbole zwangsweise in ihre undekorierten Varianten aufzulösen. Wenn möglich, möchte ich diese Option vermeiden, da sie unsinnig und potenziell gefährlich erscheint.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage