Skompiluj libgcrypt dla iPhone'a? Błąd linkera… nie może znaleźć „fwrite” i „strerror”?

Mam pomyślnieskompilował program Apache Portable Runtime (APR) na iPhone'a, używając zestawuskonfigurować skrypty które wywołują GNU Autotools „./configure” z niezbędnymi opcjami kompilacji krzyżowej.

Próbuję teraz kompilować GNUTLS, który zależy od libtasn1 i libgcrypt, co z kolei zależy od błędu libgpg. Właśnie tam wpadam w kłopoty i mogę skorzystać z Twojej pomocy ...

Obecnie próbuję kompilować błąd libgpg. Skrypty konfiguracyjne, z których korzystałem wcześniej, działają pięknie; proces „./configure” kończy się czysto. Problemy pojawiają się, gdy uruchamiam „make”. Kiedy uruchamiam make, wszystko wydaje się kompilować, ale na końcu pojawia się następujący nieprzyjemny błąd linkera:

/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

Jakieś pomysły, jak to zrobić? Wersje oprogramowania, które kompiluję, to:

libgpg-error: 1.7libgcrypt: 1.4.4libtasn1: 2.2gnutls: 2.8.4

Proszę pomóż. Dziękuję Ci.

Aktualizacja

Według wstępnych opinii każdy SDK ma kopię „libSystem.dylib” w „$ SDKROOT / usr / lib”. Nie ma kopii libSystem w „$ DEVROOT / usr / lib”, gdzie:

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

Biblioteki „libSystem” zawierają zwykłe, niezdekorowane wersje każdego symbolu, ale nie zawierają wariantów symboli „$ UNIX2003”. Podejrzewam, że GPG-ERROR definiuje „_POSIX_C_SOURCE”, „_UNIX” lub inne makro testowe funkcji UNIX, i że dołączany jest nieuczciwy nagłówek, który dołącza „$ UNIX2003” do funkcji, gdy te makra są testowane. Usunięcie „$ DEVROOT / usr / include” z listy katalogów dołączania nie ma wpływu na usunięcie tego komunikatu o błędzie.

W ostateczności widzę, że „ld” akceptuje opcję „-alias_list”, która pozwala określić plik z wpisami takimi jak „_fwrite _fwrite $ UNIX2003”, aby wymusić rozwiązanie tych niezdefiniowanych symboli do ich niezdekorowanych wariantów. Jeśli to możliwe, chciałbym uniknąć tej opcji, ponieważ wydaje się ona hackish i potencjalnie niebezpieczna.

questionAnswers(3)

yourAnswerToTheQuestion