Как собрать универсальные библиотеки в Mac OS X? - PullRequest
15 голосов
/ 28 июля 2010

Это может быть очень глупый вопрос, но я новичок в разработке на Mac и мне трудно работать с универсальными двоичными файлами.

У меня есть приложение, которое я компилирую в QTСоздатель, который, по словам Липо, производит выходы архитектуры i386.Насколько я понимаю, это означает, что он выдает 32-битные выходные данные Mac OS X.

Приложение зависит от двух внешних библиотек.Я собираю одну из этих библиотек, сначала вызывая ./config, а затем make../config утверждает, что он «настроен для darwin-i386-cc».Тем не менее, после запуска make и вызова lipo для результата, архитектура отображается как x86_64.

Аналогично, у меня есть другая внешняя библиотека.У него нет скрипта configure, и я компилирую его просто вызывая make.Выход из этого тоже x86_64.

Как я могу скомпилировать эти две внешние библиотеки так, чтобы они производили что-то совместимое с выводом i386 моего приложения?А еще лучше, как я могу скомпилировать эти две внешние библиотеки для создания универсальных библиотек, чтобы я мог создать универсальный двоичный файл из своего приложения, которое работает как на 32, так и на 64-разрядных системах?из мира Mac, есть ли другие платформы, на которые я должен рассчитывать, чтобы создать надлежащий, удобный для пользователя универсальный двоичный файл Mac OS X?

Ответы [ 3 ]

14 голосов
/ 28 июля 2010

Наконец-то все заработало.

Чтобы контролировать архитектуру цели, я вручную вошел и отредактировал Make-файлы.

Для одного из них я добавил в конецстрока, начинающаяся с CFLAGS: -arch i386 -arch x86_64 -arch ppc Это выдает универсальный двоичный файл.

С другой стороны, когда я делал то же самое, компиляция приводила к ошибке.Мне пришлось циклически проходить и ставить только одну арку за раз, а затем, после того как я произвел все три, я вызвал lipo для них с флагом -create, чтобы создать универсальный двоичный файл.

8 голосов
/ 04 июня 2013

для ./configure, вы можете использовать это:

. / Configure CFLAGS = "- arch i386 -arch x86_64" CXXFLAGS = "- arch i386 -arch x86_64" LDFLAGS = "- arch i386 -archx86_64 "--disable-dependency-tracking

- важно отключить отслеживание зависимостей, иначе gcc / g ++ откажется компилировать код.

1 голос
/ 28 июля 2010

Я не могу ответить на основную часть вашего вопроса, потому что я всегда использую Xcode, а не make.Но что касается последней части, если вы поддерживаете версии ОС более ранние, чем 10.6, вам может понадобиться скомпилировать и для PowerPC (арх. Код "ppc").

...