Boost 1.48.0编译

本文提供了一套完整的指南,从下载Boost最新版1.48.0开始,通过解压、运行批处理文件、配置VS2008环境直至完成编译Boost库。包括了如何选择编译选项以适应不同需求,以及针对早期版本的编译参考,旨在帮助开发者高效地获取并使用Boost库。

1. 至http://www.boost.org/users/history/version_1_48_0.html下载boost最新版1.48.0;

2. 解压缩后,运行bootstrap.bat批处理文件,得到bjam.exe;

3. 进入VS2008的Command Prompt (方法:Tools -> Visual Studio 2008 Command Prompt),转到boost目录。(例如,我的boost目录:D:\boost_1_48_0)

4. 输入“bjam --toolset=msvc-9.0 --build-type=complete stage”后,等待约1小时,完成编译。编译成的lib文件,放在stage\lib下,形如“libboost_program_options-vc90-sgd-1_48.lib”.

备注:对于一般使用,可以选择编译boost库(毕竟完整编译需要时间还是比较长的),例如我一般编译如下几个boost常用库system, thread, date_time, filesystem, serialization,则相应的bjam命令如下:

bjam --toolset=msvc-9.0 architecture=x86 address-model=64 --with-system --with-thread --with-date_time --with-filesystem --with-serialization


其中:msvc-9.0代表编译成VC9.0(即VS2008)版本,对应的msvc-10.0代表编译成VC10.0(即VS2010)版本; address-model=64代表编译成64位版本,如省略此项,默认为编译成32位版本。


早期版本编译参考:(bjam命令可复用)

1_47_0: http://blog.youkuaiyun.com/great3779/article/details/6654780 

1_46_0: http://blog.youkuaiyun.com/great3779/article/details/6454663


在进行 Boost 库的交叉编译时,通常需要明确目标平台的架构,并在编译时指定相应的工具链和配置参数。以下是一个较为完整的 Boost交叉编译指南,适用于嵌入式系统或其他异构平台的开发需求。 ### 交叉编译 Boost 库的基本步骤: 1. **准备交叉编译工具链** 首先需要确保已经安装了适用于目标平台的交叉编译工具链。例如,若目标平台为 ARM 架构,则应安装 `arm-linux-gnueabi-g++` 或类似工具。工具链的选择应与目标系统的 CPU 架构和操作系统版本相匹配。 2. **下载 Boost 源码包** 从 Boost 官方网站下载最新版本的源码包,例如 `boost_1_80_0.tar.gz`,并解压到本地工作目录中。 3. **配置编译环境** 使用 `bootstrap.sh` 脚本初始化构建环境,并生成 `project-config.jam` 文件: ```bash ./bootstrap.sh ``` 编辑生成的 `project-config.jam` 文件,指定交叉编译器路径,例如: ```jam using gcc : arm : arm-linux-gnueabi-g++ ; ``` 4. **指定目标架构与编译选项** 在执行 `b2` 命令时,需指定目标架构、编译器版本和安装路径。例如,为 ARM 架构编译并安装到 `/data/boost/obj/` 目录: ```bash ./b2 toolset=gcc-arm target-os=linux architecture=arm binary-format=elf abi=aapcs \ install --prefix=/data/boost/obj/ ``` 5. **验证交叉编译结果** 编译完成后,可在指定的安装目录中找到生成的库文件和头文件。将这些文件复制到目标设备的文件系统中即可使用。 6. **可选:静态库与动态库的选择** 默认情况下,Boost 会同时编译静态库和动态库。若只需编译静态库,可在 `b2` 命令中添加 `link=static runtime-link=static` 参数。 ### 示例:为 ARM 平台交叉编译 Boost ```bash # 解压 Boost 源码 tar -xzf boost_1_80_0.tar.gz cd boost_1_80_0 # 初始化构建环境 ./bootstrap.sh # 修改 project-config.jam,添加交叉编译器 echo "using gcc : arm : arm-linux-gnueabi-g++ ;" >> project-config.jam # 执行编译与安装 ./b2 toolset=gcc-arm architecture=arm link=static runtime-link=static \ install --prefix=/data/boost/obj/ ``` ### 注意事项: - 若目标平台内存有限,建议在宿主机(如 x86 PC)上进行交叉编译,避免在目标设备上直接编译[^2]。 - Boost 的某些库(如 `boost.python`)可能需要额外依赖项,确保目标平台已安装相应的运行时库。 - 若使用 Docker 容器进行开发,可避免环境配置问题,并提升开发效率[^2]。 ### Boost 交叉编译常见问题: 1. **如何判断交叉编译是否成功?** 可通过 `file` 命令查看生成的二进制文件是否为目标架构,如 `file libboost_system.so` 应显示 `ELF 32-bit LSB shared object, ARM`. 2. **Boost 是否支持 C++11 或更高版本?** 是的,Boost1.55 版本起已支持 C++11,只需在编译时指定 `-std=c++11` 等参数即可[^3]。 3. **是否必须使用 Boost.Build 系统?** 否,也可以使用 CMake 等工具管理 Boost编译过程,但 Boost.Build 是官方推荐的方式。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值