es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Arquitectura arm64 ausente en libm?

He trasladado una pequeña herramienta de Linux a MacOS en x86 utilizando simplemente el archivo Makefile existente. Ahora, necesito construir una aplicación universal, ya que algunos usuarios tienen hardware M1.

He seguido las instrucciones de Apple para construir una aplicación universal y he agregado un nuevo objetivo a mi archivo Makefile:

gcc -g -o arm -target arm64-apple-macos10.12 ar.o -lm

Sin embargo, ld se queja de que falta arm64 en /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/libm.tbd.

¿Alguna idea?

Por favor, no sugieran usar Xcode, ya que otra parte del proyecto está utilizando flex y bison y otras personas han informado de errores en Xcode al utilizar estos dos.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución para crear una aplicación universal en macOS con arquitectura arm64

    Si has portado una pequeña herramienta de Linux a macOS en x86 utilizando simplemente el Makefile existente y ahora necesitas crear una aplicación universal para admitir el hardware M1, puedes seguir las siguientes instrucciones:

    1. Agrega un nuevo objetivo a tu Makefile:
    gcc -g -o arm -target arm64-apple-macos10.12 ar.o -lm
    
    1. Sin embargo, ld se quejará de que falta arm64 en /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/libm.tbd.
    2. Para resolver este problema, debes descargar las últimas herramientas de línea de comandos de Xcode ejecutando el siguiente comando en tu terminal:

    xcode-select --install
    
    1. Una vez que las herramientas de línea de comandos de Xcode estén instaladas, deberías poder encontrar el archivo de biblioteca que falta en el siguiente directorio:
    SDKs/MacOSX.sdk/usr/lib/libm.tbd
    
    1. Agrega la biblioteca que falta a tu Makefile de la siguiente manera:
    gcc -g -o arm -target arm64-apple-macos10.12 ar.o -L$(SDKROOT)/usr/lib -lm
    
    1. Finalmente, reconstruye tu aplicación universal utilizando el comando make:
    make arm
    

    Siguiendo estos pasos, deberías poder crear exitosamente una aplicación universal en macOS con arquitectura arm64, sin utilizar Xcode para el proyecto.

Comments are closed.