Как собрать универсальные двоичные файлы boost 1.45? на леопарда / снежного барса?
Как собрать универсальные двоичные файлы boost 1.45?
Ответы (3)
Чтобы создать 4-сторонние универсальные статические двоичные файлы Boost в OSX 10.6, я делаю следующее:
Скачайте Boost с сайта Boost.
Распакуйте архив и
cd
в папкуboost_x_xx_x
(гдеx_xx_x
- версия буста, которую вы используете).Бегать:
./bootstrap.sh
, а затем# The name of the Boost.Jam program changed from "bjam" to "b2" in Boost 1.47.0
# Replace "b2" with "bjam" if you are compiling a version <= 1.46.1
./b2 macosx-version=10.6 macosx-version-min=10.4 architecture=combined threading=multi link=static address-model=32_64
Это скомпилирует все, кроме Boost.MPI (для которого требуется опция --with-mpi
). Продукты сборки помещаются в ./stage
ОБНОВЛЕНИЕ: если вы установили XCode 4, необходимо выполнить дополнительный шаг. XCode 4 не поставляется с компиляторами или библиотеками, предназначенными для PowerPC. К сожалению, компиляторы, поставляемые с XCode 4, становятся компиляторами по умолчанию, используемыми Boost. Чтобы принудительно использовать компиляторы, поставляемые с XCode 3, необходимо выполнить дополнительный шаг. Обратите внимание, что вы должны установить XCode 3, если его нет в вашей системе.
После запуска ./bootstrap.sh
и перед запуском b2
откройте:
./tools/build/v2/user-config.jam
Добавьте в этот файл следующую строку. Это дает команду boost использовать g ++ - 4.2 из XCode 3:
using darwin : : /Developer-old/usr/bin/g++-4.2 ;
Какие библиотеки вы пытаетесь создать? Здесь говорится (http://www.boost.org/doc/libs/1_45_0/more/getting_started/unix-variants.html), что:
Большинство библиотек Boost предназначены только для заголовков: они полностью состоят из файлов заголовков, содержащих шаблоны и встроенные функции, и не требуют отдельно компилируемых двоичных файлов библиотеки или специальной обработки при компоновке.
Вам нужно построить:
- Boost.Filesystem
- Boost.GraphParallel
- Boost.IOStreams
- Boost.MPI
- Boost.ProgramOptions
- Boost.Python
- Boost.Regex
- Boost.Serialization
- Boost.Signals
- Boost.System
- Boost.Thread
- Boost.Wave
Так какой из них вы пытаетесь построить?
Для создания универсальных двоичных файлов под Tiger я создавал user-config.jam
file < / a> в моем домашнем каталоге ($HOME
):
using darwin : : : <compileflags>"-arch ppc -arch i386 -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk" ;
А потом я, как обычно, создавал Boost с помощью Jam. Вероятно, это все еще должно работать со старыми версиями Mac OS X.
Другой способ - использовать MacPorts, но в этом случае все зависимости Boost должны быть перестроены как универсальные двоичные файлы, что не всегда возможно (у меня это было на Tiger два раза, но не удалось).
В обоих случаях вам необходимо установить MacOSX10.4u.sdk с XCode.
[изменить]
Чтобы создать для трех архитектур, вам лучше прочитать ответ на аналогичный вопрос. Вкратце, параметры сборки в user-config.jam
зависят от вашей и целевой версии Mac OS X. Так что лучше попробовать разные варианты, основанные на вышеупомянутом ответе.