Construire un homebrew avec un arc différent?

9

J'ai essayé d'installer la recette mysql-connector-c via homebrew, et elle se construit très bien, mais produit la bibliothèque x86_64:

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

J'ai cependant besoin de la bibliothèque i386 pour mon projet. J'ai essayé de lui donner des CFLAGS et LDFLAGS comme ceci:

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

mais rien ne change - il construit toujours x86_64 uniquement en binaire. Existe-t-il un moyen de faire en sorte que l'homebrew crée une bibliothèque à double arc ou une bibliothèque i386? J'ai l'architecture du noyau réglée sur x86_64, si cela importe.

StasM
la source
quelle version de mac que vous utilisez? Je ne peux pas le faire fonctionner sur mon Mac 10.8.1. Pourriez-vous coller votre script de brassage modifié ici comme référence? Merci beaucoup.
Kane

Réponses:

5

Vous pouvez essayer ce qui suit:

brew edit mysql-connector-c

puis modifiez l'initialisation dans le bloc "install".

Bien que je n'aie pas essayé cela, vous êtes censé faire quelque chose comme ceci:

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

Vous pouvez vérifier l'exemple ici: Problèmes avec homebrew, impossible d'installer quoi que ce soit ...

Walty Yeung
la source
Alors qu'est-ce que je mettrais là? Définitions des CFLAGS?
StasM
Le lien donné dit: ENV['CFLAGS']=ENV['CXXFLAGS']="-arch i386". i386 est un peu excessif.
harrymc
semble fonctionner, la bibliothèque est maintenant i386. Je vous remercie!
StasM
@harrymc et StasM, quelle version de mac utilisez-vous? Je ne peux pas le faire fonctionner sur mon Mac 10.8.1. Pourriez-vous coller votre script de brassage modifié ici comme référence? Merci.
Kane
@Kane Mine est 10.6.8.
StasM
5

Problème similaire rencontré lors de l'installation de DevIL. Il semble que Homebrew essaie de nettoyer les paramètres de ligne de commande passés aux outils, au moins sur ML:

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

Cela a fonctionné pour moi de modifier la formule comme dans la réponse de Walty pour spécifier CFLAGS et CXXFLAGS, mais exécutez plutôt l'installation avec un environnement standard:

$ brew install --env=std devil
qiller
la source
3

Certaines formules ont une option universelle qui vous permettrait de compiler à la fois pour i386 et x86_64 en même temps:

$ brew options sdl
--universal
        Build a universal binary

Le mysql-connector-cne le propose pas en option mais j'ai trouvé très facile d'ajouter l'option à une autre formule sur laquelle je travaillais: https://github.com/mxcl/homebrew/pull/18713/files

tiraillé
la source