tutorial smart remix español curso aprender bitcode

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.

https://github.com/JDevlieghere/LibEBC



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

  1. Obtener la información de la arquitectura.

    lipo -info yourStaticLibrary.a

Ej. salida: armv7 arm64

  1. Extraiga yourStaticLibrary.a para cualquiera o ambas de la arquitectura anterior

    lipo yourStaticLibrary.a -thin armv7 -output yourStaticLibraryarmv7.a

(especifique la ruta de salida que desea extraer)

  1. Obtiene el ''yourStaticLibraryarmv7.a'' que luego se puede extraer fácilmente con el Mac unarchiver predeterminado

  2. Al extraer, obtienes una carpeta '' yourStaticLibraryarmv7'' contiene todos los archivos .o

  3. otool -l yourFile.o | grep bitcode otool -l yourFile.o | grep bitcode o con la arquitectura específica

    otool -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