reproduccion - Crear una biblioteca estática para iPhone
no puedo ver mi musica en mi iphone 6 (4)
Hay una biblioteca de código abierto que me gustaría usar para mi aplicación de iPhone. La biblioteca está escrita en C y compila con Makefiles. Me gustaría usar una biblioteca estática.
Si agrego el archivo .a a mis dependencias de proyecto, funciona bien con el simulador, pero no se vincula cuando se dirige al iPhone SDK (sin duda porque el archivo .a se compila para una plataforma Intel).
¿Qué banderas del compilador GCC debo usar para compilar una biblioteca estática para el SDK de iPhone? Pensé que la opción ''-arch'' me proporcionaría una arquitectura de iPhone, pero no tuve suerte.
Cualquier ayuda sería apreciada.
Intente compilar con arm-apple-darwin-gcc como su aplicación GCC. Luego puede usar lipo para fusionar las 2 bibliotecas estáticas (brazo y 386) juntas para que el desarrollo en el simulador versus el dispositivo sea uniforme.
Para la biblioteca basada en autoconf, votaría por el guión de compilación de Christopher Stawarz:
http://pseudogreen.org/blog/build_autoconfed_libs_for_iphone.html
Con esta secuencia de comandos, puede automatizar todo el proceso con un solo comando y crear binarios de biblioteca para diferentes plataformas, como iPhoneOS 2.0 / 2.1 / 2.2 / 2.2.1 y iPhoneSimulator 2.0 / 2.1 / 2.2 / 2.2.1.
Sin embargo, debido al cambio de Xcode 3.1 , la configuración de compilación $ (SDKROOT) se había convertido en algunos nombres cortos como "macosx10.5", "iphoneos2.2.1" o "iphonesimulator2.2.1". Por lo tanto, la forma en que mencionó en el artículo sobre cómo establecer la ruta de búsqueda en Xcode para la biblioteca y el encabezado no funcionará (en Xcode 3.1). Necesitarás codificar el camino por tu cuenta.
Después de varios intentos de usar el brazo GCC compilador con los consejos proporcionados aquí , me di por vencido. En mi caso, es mucho más simple simplemente portar la biblioteca a XCode que tratar de compilar una biblioteca estática para el iPhone.
Simplemente compilarlo normalmente usando el s86 x86 (simulador de iphone) y luego usar la plataforma para arm / ios (arm-xxx-xxx) y luego combinar ambas libs estáticas en .a usando "LIPO" (herramienta de línea de comandos). Funciona bien y es más simple que reinventar la rueda (al menos para esas libs más pequeñas) ... lo hice con liblo y libdmtx y no tengo ningún problema y me tomó como 10 minutos hacer ambas cosas ... :-)