smart - ¿Cómo comprobar que una biblioteca estática está construida contiene bitcode?
solidity español (5)
Como ya estaba escrito en otras respuestas,
otool -l yourlib.a | grep __LLVM
es el camino a seguir
Un ingeniero de Apple dice que usa
otool -l yourlib.a | grep bitcode
no es confiable
La búsqueda de una sección de "código de bits" no es una forma confiable de detectar si sus archivos contienen códigos de bits incrustados. Si desea hacerlo, busque el segmento "__LLVM". Debe tener en cuenta que una compilación normal con la opción -fembed-bitcode-marker producirá secciones de tamaño mínimo incrustadas de bitcode sin ningún contenido real. Esto se hace como una forma de probar los aspectos relacionados con el código de bits de su compilación sin ralentizar el proceso de compilación. El contenido del código de bits real se incluye cuando realiza una compilación de archivo.
Véanse también los comentarios de .
Parece que el otool
no informa el código de bits si se incluye el código para la arquitectura del simulador de iPhone (x86_64 o arm64).
Puedes listar las arquitecturas de lib con:
lipo -info yourlib.a
Luego puede verificar el código de bits para cada arquitectura por separado, por ejemplo:
otool -arch armv7 -l yourlib.a | grep bitcode
otool -arch arm64 -l yourlib.a | grep bitcode
Tengo una biblioteca estática que está construida por otra empresa. Quiero saber si es una biblioteca estática que contiene código de bits, ¿qué comando puede detectarla en el terminal?
Descargo de responsabilidad: Soy el autor de LibEBC.
Puede usar ebcutil
para ver si el código de bits está presente en un binario o biblioteca Mach-O. Incluso puede utilizarlo para extraer el código de bits incorporado.
Puedes probar: otool -l (archivo .o o .a)
y busque la sección "__bitcode"
Se respondió aquí: ¿Cómo puedo xcodebuild una biblioteca estática con Bitcode habilitado?
Se recomienda probar contra los símbolos LLVM:
otool -l yourlib.a | grep LLVM
Deberías obtener algunas líneas con "__LLVM"
Y si desea verificar si un archivo específico (yourFile.o)
en la biblioteca estática está habilitado con código de bits, puede extraer ''staticLibrary.a''
y usar el mismo comando otool
. Sin embargo, macOS no permite extraer su staticLibrary.a a veces con la utilidad de extracción predeterminada y la mayoría de las herramientas de terceros tampoco funcionan.
Puedes seguir estos pasos para verificar archivos .o
específicos
Obtener la información de la arquitectura.
lipo -info yourStaticLibrary.a
Ej. salida: armv7 arm64
Extraiga
yourStaticLibrary.a
para cualquiera o ambas de la arquitectura anteriorlipo yourStaticLibrary.a -thin armv7 -output yourStaticLibraryarmv7.a
(especifique la ruta de salida que desea extraer)
Obtiene el
''yourStaticLibraryarmv7.a''
que luego se puede extraer fácilmente con el Mac unarchiver predeterminadoAl extraer, obtienes una carpeta ''
yourStaticLibraryarmv7''
contiene todos los archivos .ootool -l yourFile.o | grep bitcode
otool -l yourFile.o | grep bitcode
o con la arquitectura específicaotool -arch armv7 -l yourFile.o | grep bitcode
Si el archivo tiene código de bits habilitado, obtienes ''sectname __bitcode'' en la línea de comandos