Pregunta

Estoy intentando compilar vinculante con el fin de ser capaz de utilizarlo en el iPhone ZeroMQ C, aquí está mi opciones de configuración:

./configure --host=arm-apple-darwin --enable-static=yes --enable-shared=no CC=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc-4.2.1 CFLAGS="-pipe -std=c99 -Wno-trigraphs -fpascal-strings -O0 -Wreturn-type -Wunused-variable -fmessage-length=0 -fvisibility=hidden -miphoneos-version-min=3.1.2 -gdwarf-2 -mthumb -I/Library/iPhone/include -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk -mdynamic-no-pic" CPP=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/cpp AR=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar AS=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/as LIBTOOL=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool STRIP=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/strip RANLIB=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ranlib

En realidad, configura y compila bien, pero cuando lo añado a la sección Xcode Marcos, consigo advertencia:. ld: warning: in /path/to/app/libzmq.a, file was built for unsupported file format which is not the architecture being linked (armv7) errores y una gran cantidad de símbolos que no se encuentran

Si cambio de la arquitectura activa actual de ARMv6 a ARMv7, mensaje de advertencia cambiarlo a ARMv6. ¿Qué estoy haciendo mal?

Gracias, Dan

¿Fue útil?

Solución

Parece que usted está construyendo una ARMv6 universal / binaria ARMv7 para el iPhone (este es el valor por defecto, por lo que tiene sentido). Eso significa que usted necesita para construir una biblioteca universal de enlace en contra. La creación ambos bibliotecas, y luego usar lipo combinar los dos.

Por ejemplo, construir el ARMv6 y colocarlo en armv6/libfoo.a, y el ARMv7 en armv7/libfoo.a. A continuación, ejecute

lipo -arch armv6 armv6/libfoo.a -arch armv7 armv7/libfoo.a -output libfoo.a -create

para crear el libfoo.a biblioteca universal.

Otros consejos

Teniendo en cuenta el mensaje de advertencia de ld, mi conjetura es que no se está compilando la biblioteca para la plataforma correcta. Y teniendo en cuenta que está utilizando configure, mi suposición es que estamos tratando de compilar el exterior de la biblioteca de Xcode y luego ponerla en Xcode después de vincularlo en.

Tal vez usted podría intentar ejecutar configure para configurar sus cabeceras, pero hacer el paso de compilación real dentro de Xcode?

Hay un montón de preguntas relacionadas aquí en SO sobre la compilación de terceros (externos) C o C ++ bibliotecas para su uso en proyectos de iPhone.

Creación de biblioteca estática para iPhone

TiMidity: ¿necesita ayuda compilar esta biblioteca para el iPhone

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top