64-битная версия Boost для 64-битных окон

119

Есть ли версия 64-битной библиотеки Boost для VS2008? Или мне нужно самому скомпилировать? если да, есть ли у кого-нибудь опыт с этим?

ra170
источник

Ответы:

226

Короткий ответ:

bjam --toolset=msvc-9.0 address-model=64 --build-type=complete

В качестве более подробного ответа, вот мои заметки по сборке для 32-разрядных и 64-разрядных библиотек повышения VS .NET 2008 в одной иерархии (что, как я подозреваю, является распространенным вариантом использования):

  1. Соберите двоичные файлы win32

    bjam --toolset=msvc-9.0 --build-type=complete stage
  2. Создайте каталог lib \ win32

  3. Переместите содержимое stage \ lib в lib \ win32
  4. Удалите каталоги bin.v2 и этап
  5. Соберите двоичные файлы x64

    bjam --toolset=msvc-9.0 address-model=64 --build-type=complete stage
  6. Создайте каталог lib \ x64

  7. Переместите содержимое stage \ lib в lib \ x64
  8. Удалите каталоги bin.v2 и этап
Адриан Конлон
источник
25
Вы также можете указать каталог сцены, что устраняет необходимость копировать полученные библиотеки вокруг: bjam --toolset = msvc-9.0 address-model = 64 --build-type = complete --stagedir = lib \ x64 stage
hkaiser
8
что такое сцена ?
Рамадир Сингх,
16
К сожалению, для сборки 64 адрес-модель = 64 не работает. Ваш путь должен указывать на Visual Studio \ bin \ amd64 \ cl.exe. В противном случае создается 32-битная версия. Для этого вы можете запустить командную строку Microsoft SDK и использовать «setenv / Release / x64», который переопределяет все пути.
Budric
2
@Budric, ты уверен? Кажется, это сработало для меня, и это явно указывает на предоставление пути к 32-битному компилятору даже при сборке в 64-битном режиме.
Maciej Gryka
4
Если вам нужно собрать как 32-разрядную, так и 64-разрядную версию, также можно использовать параметр stagedir: "bjam --stagedir =. / Lib_64bit address-model = 64 toolset = msvc threading = multi" и "bjam --stagedir =. / lib toolset = msvc threading = multi "
Odin
63

У меня есть встроенные двоичные файлы на моем сайте: http://boost.teeks99.com

Изменить 2013-05-13: Мои сборки теперь доступны (начиная с 1.53) прямо со страницы sourceforge .

teeks99
источник
5
Отлично, что вы это предоставляете, поскольку BoostPRo (который предоставляет двоичные файлы для библиотек Boost) не предоставляет версии x64. Спасибо!
CharlesB
Есть ли шанс, что вы можете опубликовать двоичные файлы VS2015 (VC ++ 14)? Это было бы очень признательно.
Рассел Грин
1
Бинарные файлы msvc-14.0 появятся в выпуске 1.59, который выйдет через пару недель.
teeks99
22

ОБНОВЛЕНИЕ (19.09.2017): добавлены строки скрипта для VS2017. Имейте в виду, что Boost поддерживает компилятор VS2017 из указанной выше версии. Я использовал последнюю версию (1.65.1).

Я использовал эти сценарии для создания boost для платформ x64 и x86, lib и dll, отладки и выпуска для VS2017, VS2015 и VS2013:

md stage\VS2017\x64
md stage\VS2015\x64
md stage\VS2013\x64    

b2 --stagedir=./stage/VS2017/x64 address-model=64 --build-type=complete --toolset=msvc-14.1 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2017/x64 address-model=64 --build-type=complete --toolset=msvc-14.1 --threading=multi --runtime-link=shared --variant=release  

b2 --stagedir=./stage/VS2015/x64 address-model=64 --build-type=complete --toolset=msvc-14.0 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2015/x64 address-model=64 --build-type=complete --toolset=msvc-14.0 --threading=multi --runtime-link=shared --variant=release

b2 --stagedir=./stage/VS2013/x64 address-model=64 --build-type=complete --toolset=msvc-12.0 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2013/x64 address-model=64 --build-type=complete --toolset=msvc-12.0 --threading=multi --runtime-link=shared --variant=release


md stage\VS2017\win32
md stage\VS2015\win32
md stage\VS2013\win32

b2 --stagedir=./stage/VS2017/win32 --build-type=complete --toolset=msvc-14.1 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2017/win32 --build-type=complete --toolset=msvc-14.1 --threading=multi --runtime-link=shared --variant=release

b2 --stagedir=./stage/VS2015/win32 --build-type=complete --toolset=msvc-14.0 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2015/win32 --build-type=complete --toolset=msvc-14.0 --threading=multi --runtime-link=shared --variant=release

b2 --stagedir=./stage/VS2013/win32 --build-type=complete --toolset=msvc-12.0 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2013/win32 --build-type=complete --toolset=msvc-12.0 --threading=multi --runtime-link=shared --variant=release

pause

Вы можете создать .batфайл и запустить его для создания двоичных файлов ускорения.

донесение в базу
источник
12

На данный момент 64-разрядные двоичные файлы, предоставляемые teeks99 (см. Другой ответ), кажутся единственными бесплатными 64-разрядными двоичными файлами. Некоторое время BoostPro также предоставлял 64-битные двоичные файлы, но с 1.51 они, похоже, не работают.

Итак, мы снова вернулись к двум вариантам: двоичные файлы teeks99 или создание собственного.

Большая часть информации, которая мне нужна для создания собственного, была здесь: https://stackoverflow.com/a/2655683/613288

Не хватало только того, как заставить это работать с бесплатной версией Visual Studio 2010 Express. Я нашел эту недостающую часть где-то еще, и после некоторой настройки окончательный рецепт, который я использовал для моей сборки двоичных файлов boost 1.49.0, был:

Запустите Visual C ++ и из меню «Инструменты» запустите командную строку Visual Studio.

В окне консоли сделайте следующее:

"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\setenv.cmd"  /Release  /x64

а затем в каталоге boost:

bootstrap.bat
b2  -a  -sBZIP2_SOURCE="C:\bzip2-1.0.6"   -sZLIB_SOURCE="C:\zlib-1.2.5"   --toolset=msvc-10.0  architecture=x86  address-model=64  link=static  --with-date_time  --with-filesystem  --with-serialization  --with-test  --with-thread  --with-system  --with-regex  --with-iostreams  stage

Последняя команда настроена для того, что мне нужно (только некоторые статически связанные библиотеки).

ecotax
источник
Я загрузил их установщик x64 1_51, однако он содержит поврежденный архив для системной библиотеки, и, похоже, некоторые другие библиотеки имеют x86 (я получаю предупреждения компоновщика). После перехода на библиотеки teeks99 все стало ОК.
Alex
4

Я сделал небольшой скрипт, который компилирует их все для VS2005 и VS2008:

md stage\lib\win32
md stage\lib\x64

REM Visual Studio 2005
bjam --toolset=msvc-8.0 --build-type=complete stage
move /Y stage\lib\* stage\lib\win32\

bjam --toolset=msvc-8.0 address-model=64 --build-type=complete stage
move /Y stage\lib\* stage\lib\x64\

REM Visual Studio 2008
bjam --toolset=msvc-9.0 --build-type=complete stage
move /Y stage\lib\* stage\lib\win32\

bjam --toolset=msvc-9.0 address-model=64 --build-type=complete stage
move /Y stage\lib\* stage\lib\x64\
Харальд Краузе
источник