¿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.


¿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 ...


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

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.