Доморощенный строй с другой аркой?

9

Я попытался установить рецепт mysql-connector-c через homebrew, и он прекрасно собирается, но выдает библиотеку x86_64:

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

Однако мне нужна библиотека i386 для моего проекта. Я попытался дать ему CFLAGS и LDFLAGS так:

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

но ничего не меняется - он все еще строит x86_64 только двоичный. Есть ли способ заставить homebrew собрать библиотеку с двумя арками или библиотеку i386? Я имею архитектуру ядра установленную на x86_64, если это имеет значение.

StasM
источник
какую версию mac вы используете? Я не могу заставить его работать на моем Mac 10.8.1. Не могли бы вы вставить свой модифицированный скрипт Brew здесь в качестве ссылки? Большое спасибо.
Кейн

Ответы:

5

Вы можете попробовать следующее:

brew edit mysql-connector-c

а затем измените инициализацию в блоке "install".

Хотя я не пробовал это, вы должны сделать что-то вроде этого:

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

Вы можете проверить пример здесь: Проблемы с homebrew, не могу ничего установить ...

Walty Yeung
источник
Так что бы я там положил? CFLAGS определения?
StasM
Данная ссылка говорит: ENV['CFLAGS']=ENV['CXXFLAGS']="-arch i386". i386 немного избыточен.
Harrymc
Вроде работает, библиотека сейчас i386. Спасибо!
StasM
@harrymc и StasM, какую версию Mac вы используете? Я не могу заставить его работать на моем Mac 10.8.1. Не могли бы вы вставить свой модифицированный скрипт Brew здесь в качестве ссылки? Спасибо.
Кейн
@ Кейн Майн 10.6.8.
StasM
5

Обнаружена похожая проблема при установке DevIL. Похоже, что Homebrew пытается очистить параметры командной строки, передаваемые инструментам, по крайней мере на ML:

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

Мне удалось изменить формулу, как в ответе Уолти, указав CFLAGS и CXXFLAGS, но вместо этого запустить установку со стандартной средой:

$ brew install --env=std devil
qiller
источник
3

Некоторые формулы имеют универсальную опцию, которая позволит вам компилировать и для i386, и для x86_64 одновременно:

$ brew options sdl
--universal
        Build a universal binary

Он mysql-connector-cне предлагает его как опцию, но мне было очень легко добавить опцию в другую формулу, над которой я работал: https://github.com/mxcl/homebrew/pull/18713/files

drewish
источник