¿Construcción casera con arco diferente?

9

Traté de instalar la receta mysql-connector-c a través de homebrew, y funciona muy bien, pero produce la biblioteca x86_64:

  $file ~/brew/lib/libmysql.dylib 
  .../brew/lib/libmysql.dylib: Mach-O 64-bit dynamically linked shared library x86_64

Sin embargo, necesito la biblioteca i386 para mi proyecto. Traté de darle CFLAGS y LDFLAGS de esta manera:

  CFLAGS="-arch i386 -arch x86_64" LDFLAGS="-arch i386 -arch x86_64" brew install mysql-connector-c

pero nada cambia: todavía construye x86_64 solo binario. ¿Hay alguna manera de hacer que homebrew construya la biblioteca de doble arco o la biblioteca i386? Tengo la arquitectura del kernel establecida en x86_64, si es importante.

StasM
fuente
¿Qué versión de Mac estás usando? No puedo hacer que funcione en mi Mac 10.8.1. ¿Podría pegar su script de preparación modificado aquí como referencia? Muchas gracias.
Kane

Respuestas:

5

Puedes probar lo siguiente:

brew edit mysql-connector-c

y luego modifique la inicialización en el bloque "instalar".

Aunque no probé esto, se supone que debes hacer algo como esto:

ENV['CFLAGS']='xxx'
ENV['LDFLAGS']='xxx'

Puede consultar el ejemplo aquí: Problemas con homebrew, no se puede instalar nada ...

Walty Yeung
fuente
Entonces, ¿qué pondría allí? CFLAGS definiciones?
StasM
El enlace dado dice: ENV['CFLAGS']=ENV['CXXFLAGS']="-arch i386". i386 es un poco excesivo.
harrymc
parece estar funcionando, la biblioteca ahora es i386. ¡Gracias!
StasM
@harrymc y StasM, ¿qué versión de Mac estás usando? No puedo hacer que funcione en mi Mac 10.8.1. ¿Podría pegar su script de preparación modificado aquí como referencia? Gracias.
Kane
@Kane Mine es 10.6.8.
StasM
5

Se encontró un problema similar al instalar DevIL. Parece que Homebrew está tratando de desinfectar los parámetros de la línea de comandos pasados ​​a las herramientas, al menos en ML:

$ brew install -v devil
...
brew: superenv removed: -arch i386
...

Me funcionó editar la fórmula como en la respuesta de Walty para especificar CFLAGS y CXXFLAGS, pero ejecutar install con un entorno estándar en su lugar:

$ brew install --env=std devil
qiller
fuente
3

Algunas fórmulas tienen una opción universal que le permitirá compilar tanto para i386 como para x86_64 al mismo tiempo:

$ brew options sdl
--universal
        Build a universal binary

El mysql-connector-cno lo ofrece como una opción, pero me pareció muy fácil para agregar la opción a otra fórmula que estaba trabajando: https://github.com/mxcl/homebrew/pull/18713/files

descarado
fuente