¿Compilación cruzada de libgcrypt para iPhone? Error de vinculador ... parece que no se puede encontrar "fwrite" y "strerror"?

Tengo éxitocompilado de forma cruzada el Apache Portable Runtime (APR) para el iPhone, usando un conjunto deconfigurar scripts que invoca GNU Autotools "./configure" con las opciones de compilación cruzada necesarias.

Ahora estoy intentando compilar GNUTLS de forma cruzada, que depende de libtasn1 y libgcrypt, que a su vez, depende de libgpg-error. Aquí es donde estoy teniendo problemas y podría usar su ayuda ...

Actualmente estoy tratando de compilar de forma cruzada libgpg-error. Los scripts de configuración que he usado antes están funcionando a la perfección; el proceso "./configure" se completa limpiamente. Los problemas ocurren cuando ejecuto "make". Cuando ejecuto make, todo parece compilarse, pero al final aparece el siguiente error del desagradable vinculador:

/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

¿Alguna idea sobre cómo hacer que esto funcione? Las versiones del software que estoy compilando son:

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

Por favor ayuda. Gracias.

Actualizar

Según los comentarios iniciales, cada SDK tiene una copia de "libSystem.dylib" en "$ SDKROOT / usr / lib". No hay una copia de libSystem en "$ DEVROOT / usr / lib", donde:

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

Las bibliotecas "libSystem" contienen las versiones ordinarias, sin decorar, de cada símbolo, pero no contienen las variantes "$ UNIX2003" de los símbolos. Sospecho que GPG-ERROR está definiendo "_POSIX_C_SOURCE", "_UNIX" u otra macro de prueba de características de UNIX, y se incluye un encabezado no autorizado que agrega "$ UNIX2003" a las funciones cuando estas macros de prueba de características están presentes. La eliminación de "$ DEVROOT / usr / include" de la lista de directorios de inclusión no tiene ningún efecto con respecto a la eliminación de este mensaje de error.

Como último recurso, veo que "ld" acepta una opción "-alias_list" que permite especificar un archivo con entradas como "_fwrite _fwrite $ UNIX2003" para resolver por la fuerza estos símbolos indefinidos a sus variantes sin decorar. Si es posible, me gustaría evitar esta opción, ya que parece pirata y potencialmente peligrosa.

Respuestas a la pregunta(3)

Su respuesta a la pregunta