Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

245
Vistas
Cree el binario Apple Silicon en una máquina Intel

¿Cómo puedo compilar un proyecto C en macOS 11 (Intel) para trabajar en Silicon?

Mi script de compilación actual es tan simple como:

 ./configure make sudo make install

Intenté usar las banderas --host y --target con aarch64-apple-darwin y arm-apple-darwin sin suerte.

El binario siempre tiene como valor predeterminado x86_64 :

 > file foobar.so foobar.so: Mach-O 64-bit bundle x86_64

ACTUALIZACIÓN: parece que cc y gcc no se encuentran cuando se especifica --host .

 checking for arm-apple-darwin-cc... no checking for arm-apple-darwin-gcc... no
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Encontré una pista en esta página para usar esto:

 -target arm64-apple-macos11

Cuando ejecuto esto desde mi mac:

 clang++ main.cpp -target arm64-apple-macos11

El binario a.out resultante se muestra como:

 % file a.out a.out: Mach-O 64-bit executable arm64

Tengo XCode 12.2 instalado.

No tengo un Arm Mac frente a mí, así que asumo que esto funciona.

over 4 years ago · Santiago Trujillo Denunciar

0

Mr. Curious también estaba interesado en la compilación cruzada con M1. Una solución inesperada es Zig . Su objetivo es ser la mejor manera de compilar C de forma cruzada, entre otras cosas; se dirige fácilmente a M1 desde Linux.

Hubo una serie de transmisiones sobre la compilación cruzada con M1 hace un par de semanas: la Parte 1 muestra cómo usar Zig como un compilador cruzado en archivos MAKE existentes, y en la Parte 3 demuestran con éxito la compilación de Redis en Linux para M1.

Muy recomendable.

over 4 years ago · Santiago Trujillo Denunciar

0

Terminamos resolviendo esto y pudimos compilar darwin-arm64 y debian-aarch64 en las máquinas x86-64 de GitHub Actions.

Precompilamos todas nuestras dependencias para arm64 y las vinculamos tanto estática como dinámicamente.

 export RELAY_DEPS_PATH=./build-deps/arm64 export PKG_CONFIG_PATH=./build-deps/arm64/lib/pkgconfig cd ./relay-deps TARGET=./build-deps make install cd ./relay phpize ./configure CFLAGS='-target arm64-apple-macos' \ --host=aarch64-apple-darwin \ --enable-relay-jemalloc-prefix [snip...] make # Dynamically linked binary cc --target=arm64-apple-darwin \ ${wl}-flat_namespace ${wl}-undefined ${wl}suppress \ -o .libs/relay.so -bundle .libs/*.o \ -L$RELAY_DEPS_PATH/lib -lhiredis -ljemalloc_pic [snip...] # re-link to standard paths ./relay-deps/utils/macos/relink.sh .libs/relay.so /usr/local/lib cp .libs/relay.so modules/relay.so # Build a statically linked shared object cc --target=arm64-apple-darwin \ ${wl}-flat_namespace ${wl}-undefined ${wl}suppress \ -o .libs/relay-static.so -bundle .libs/*.o \ $RELAY_DEPS_PATH/lib/libhiredis.a \ $RELAY_DEPS_PATH/lib/libjemalloc_pic.a \ [snip...]

El relink.sh :

 #!/bin/bash set -e printUsage() { echo "$0 <shared-object> <prefix>" exit 1 } if [[ ! -f "$1" || -z "$2" ]]; then printUsage exit 1 fi INFILE=$1 PREFIX=$2 links=(libjemalloc libhiredis [snip...]) if [ -z "$PREFIX" ]; then PREFIX=libs fi for link in ${links[@]}; do FROM=$(otool -L "$INFILE"|grep $link|awk '{print $1}') FILE=$(basename -- "$FROM") TO="$PREFIX/$FILE" echo "$FROM -> $TO" install_name_tool -change "$FROM" "$TO" "$1" done
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda