Homebrew construir com arco diferente?

9

Eu tentei instalar a receita do mysql-connector-c via homebrew, e ela cria muito bem, mas produz a biblioteca x86_64:

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

No entanto, eu preciso da biblioteca i386 para o meu projeto. Eu tentei dar CFLAGS e LDFLAGS assim:

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

mas nada muda - ele ainda cria o binário x86_64 apenas. Existe alguma maneira de fazer o homebrew construir a biblioteca de arco duplo ou a biblioteca i386? Eu tenho a arquitetura do kernel definida como x86_64, se isso importa.

StasM
fonte
qual versão do mac você está usando? Não consigo fazê-lo funcionar no meu Mac 10.8.1. Você poderia colar seu script de modificação modificado aqui como referência? Muito obrigado.
Kane

Respostas:

5

Você pode tentar o seguinte:

brew edit mysql-connector-c

e modifique a inicialização no bloco "instalar".

Embora eu não tenha experimentado isso, você deve fazer algo assim:

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

Você pode verificar o exemplo aqui: Problemas com o homebrew, não é possível instalar nada ...

Walty Yeung
fonte
Então, o que eu colocaria lá? Definições de CFLAGS?
StasM
A determinado link diz: ENV['CFLAGS']=ENV['CXXFLAGS']="-arch i386". O i386 é um pouco excessivo.
harrymc 01/09/12
parece estar funcionando, a biblioteca agora é i386. Obrigado!
StasM
@harrymc e StasM, qual versão do mac você está usando? Não consigo fazê-lo funcionar no meu Mac 10.8.1. Você poderia colar seu script de modificação modificado aqui como referência? Obrigado.
Kane
O @Kane Mine é 10.6.8.
StasM
5

Foi encontrado um problema semelhante ao instalar o DevIL. Parece que o Homebrew está tentando limpar os parâmetros da linha de comando passados ​​para as ferramentas, pelo menos no ML:

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

Funcionou para mim editar a fórmula, como na resposta de Walty, para especificar CFLAGS e CXXFLAGS, mas executar o install com um ambiente padrão:

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

Algumas fórmulas têm uma opção universal que permite compilar para i386 e x86_64 ao mesmo tempo:

$ brew options sdl
--universal
        Build a universal binary

O mysql-connector-cnão o oferece como opção, mas achei muito fácil adicionar a opção a outra fórmula em que eu estava trabalhando: https://github.com/mxcl/homebrew/pull/18713/files

mesquinho
fonte