Сайт библиотеки
Версия | Резюме |
1.64.0 | При сборке под Android при использовании в настройках слова gcc b2.exe зависает (использовать слово clang даже при сборке при помощи gcc) |
1.67.0 | Утечка памяти в Boost.Serialization |
1.71.0 | - |
1.73.0 | - |
Сборка для Windows
Построение всех возможных вариантов (все библиотеки, Release|Debug, x86|x64):
Построение только нужных библиотек:
bootstrap.bat
b2.exe --build-type=minimal msvc stage --with-filesystem
Построение для конкретной версии Visual Studio:
bootstrap.bat vc9
b2.exe toolset=msvc-9.0
Конфликт в DLL, построенной на базе MFC
Проявляется как assert'ы в файлах dllinit.cpp и dllmodul.cpp при загрузке DLL.
Для решения проблемы, закомментировать в файле ./libs/thread/src/win32/tss_pe.cpp строку
и пересобрать lib'ы. Также нужно будет при выгрузке dll вызвать
#include <boost/thread/detail/tss_hooks.hpp>
on_process_exit();
Сборка для Android
Описание сборки на Windows
Скрипт сборки
Готовые сборки
Сборка при помощи clang 5.0
- Заметки
- Сборка производилась:
- 28.04.2020.
- android-ndk-r16b.
- Boost 1.73.
Сборка:
- В папке $(BoostRoot) запустить bootstrap.bat (будет построен файл b2.exe).
- В папке $(BoostRoot) создать файл с именем user-config.jam, содержащий
import os ;
local AndroidNDKRoot = [ os.environ ANDROID_NDK_ROOT ] ;
local AndroidBinariesPath = [ os.environ CLANG_PATH ] ;
local AndroidApi = [ os.environ ANDROID_API ] ;
using clang : arm : $(AndroidBinariesPath)/clang++ :
<compileflags>-DNDEBUG
<compileflags>-DANDROID
<compileflags>-D__ANDROID__
<compileflags>-D__ANDROID_API__=$(AndroidApi)
<compileflags>-DHAVE_CONFIG_H
<compileflags>-DBOOST_FILESYSTEM_VERSION=3
<compileflags>--sysroot=$(AndroidNDKRoot)/sysroot
<compileflags>-I$(AndroidNDKRoot)/sources/cxx-stl/llvm-libc++/include
<compileflags>-I$(AndroidNDKRoot)/sources/cxx-stl/llvm-libc++abi/include
<compileflags>-I$(AndroidNDKRoot)/sources/android/support/include
<compileflags>-I$(AndroidNDKRoot)/sysroot/usr/include
<compileflags>-I$(AndroidNDKRoot)/sysroot/usr/include/arm-linux-androideabi
<compileflags>-std=c++14
<compileflags>-fstack-protector
<compileflags>-g0
<compileflags>-O3
<compileflags>-frtti
<compileflags>-fexceptions
<compileflags>-target
<compileflags>armv7-linux-androideabi
<compileflags>-march=armv7-a
<architecture>arm
<archiver>$(AndroidNDKRoot)/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/arm-linux-androideabi/bin/ar
<ranlib>$(AndroidNDKRoot)/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/arm-linux-androideabi/bin/ranlib
;
using clang : arm64 : $(AndroidBinariesPath)/clang++ :
<compileflags>-DNDEBUG
<compileflags>-DANDROID
<compileflags>-D__ANDROID__
<compileflags>-D__ANDROID_API__=$(AndroidApi)
<compileflags>-DHAVE_CONFIG_H
<compileflags>-DBOOST_FILESYSTEM_VERSION=3
<compileflags>--sysroot=$(AndroidNDKRoot)/sysroot
<compileflags>-I$(AndroidNDKRoot)/sources/cxx-stl/llvm-libc++/include
<compileflags>-I$(AndroidNDKRoot)/sources/cxx-stl/llvm-libc++abi/include
<compileflags>-I$(AndroidNDKRoot)/sources/android/support/include
<compileflags>-I$(AndroidNDKRoot)/sysroot/usr/include
<compileflags>-I$(AndroidNDKRoot)/sysroot/usr/include/aarch64-linux-android
<compileflags>-std=c++14
<compileflags>-fstack-protector
<compileflags>-g0
<compileflags>-O3
<compileflags>-frtti
<compileflags>-fexceptions
<compileflags>-target
<compileflags>aarch64-none-linux-android
<compileflags>-march=armv8-a
<architecture>arm
<archiver>$(AndroidNDKRoot)/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64/aarch64-linux-android/bin/ar
<ranlib>$(AndroidNDKRoot)/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64/aarch64-linux-android/bin/ranlib
;
- В папке $(BoostRoot) создать и запустить на исполнение файл BuildAndroid.cmd (при необходимости изменить путь к ANDROID_NDK и ANDROID_API)
@echo off
rem ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ BUILD ARM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
set ANDROID_NDK_ROOT=C:\Microsoft\AndroidNDK64\android-ndk-r16b
set ANDROID_API=19
set CLANG_PATH=%ANDROID_NDK_ROOT%\toolchains\llvm\prebuilt\windows-x86_64\bin
set ANDROID_TOOLCHAIN=%ANDROID_NDK_ROOT%\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\arm-linux-androideabi\bin
set PATH=%PATH%;%ANDROID_TOOLCHAIN%;
rd /S /Q .\android
rd /S /Q .\bin.v2
b2 target-os=android toolset=clang-arm link=static runtime-link=static ^
--layout=tagged --stagedir=android --ignore-site-config -j4 -q ^
--user-config=./user-config.jam ^
--with-date_time --with-filesystem --with-chrono --with-thread ^
threading=multi threadapi=pthread
cd ./android/lib
for %%i in (*.a) do (
ar -x %%i
)
for %%i in (*.o) do (
ar -cr libboost.a %%i
)
del *.o
pause
@echo off
rem ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ BUILD ARM64 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
set ANDROID_NDK_ROOT=C:\Microsoft\AndroidNDK64\android-ndk-r16b
set ANDROID_API=21
set CLANG_PATH=%ANDROID_NDK_ROOT%\toolchains\llvm\prebuilt\windows-x86_64\bin
set ANDROID_TOOLCHAIN=%ANDROID_NDK_ROOT%\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\aarch64-linux-android\bin
set PATH=%PATH%;%ANDROID_TOOLCHAIN%;
rd /S /Q .\android
rd /S /Q .\bin.v2
b2 target-os=android toolset=clang-arm64 link=static runtime-link=static ^
address-model=64 architecture=arm abi=aapcs ^
--layout=tagged --stagedir=android --ignore-site-config -j4 -q ^
--user-config=./user-config.jam ^
--with-date_time --with-filesystem --with-chrono --with-thread ^
threading=multi threadapi=pthread
cd ./android/lib
for %%i in (*.a) do (
ar -x %%i
)
for %%i in (*.o) do (
ar -cr libboost.a %%i
)
del *.o
pause
- Результатом построения будет общий файл libboost.a в папке $(BoostRoot)/android/lib.