build boost_1_48 on ubuntu and windows

本文详细介绍了如何在Windows XP环境下通过Visual Studio 2008构建并优化Boost库,包括下载依赖库、配置环境、构建库等关键步骤。同时,也提供了在其他操作系统上构建Boost库的方法,旨在帮助开发者高效地集成和使用Boost库。

onega@ub-laptop:~$ tar xvjf Downloads/boost_1_48_0.tar.bz2

onega@ub-laptop:~/boost_1_48_0$ du -sh

419M

onega@ub-laptop:~/boost_1_48_0$./bootstrap.sh


onega@ub-laptop:~/boost_1_48_0$ time./b2 variant=release link=static runtime-link=shared threading=multi

...

gcc.archivebin.v2/libs/filesystem/build/gcc-4.6.1/release/link-static/threading-multi/libboost_filesystem.a

common.copystage/lib/libboost_filesystem.a

...failed updating 28 targets...

...skipped 3 targets...

...updated 503 targets...


real 7m31.343s

user 7m0.362s

sys 0m22.629s


onega@ub-laptop:~/boost_1_48_0$ sudo ./b2 install


remove boost_1_44_0 libraries from/usr/local/lib

onega@ub-laptop:~/boost_1_48_0$ sudo -s

root@ub-laptop:~/boost_1_48_0# find /usr/local/lib -name "*44*" | xargs rm

root@ub-laptop:~/boost_1_48_0# su onega

onega@ub-laptop:~/boost_1_48_0$ du -sh

565M


Build boost_1_48_0.tar.bz2 on Windows XP via VC++ 2008

download timeit.exe from Windows 2003 Resource Kit

download du.exe from sysinternals

download icu4c-4_4_2-src.tgz and build it. Note: icu4c-4_6_1-src.tgz and icu4c-4_8_1_1-src.tgz only provides VC++ 2010 project files.

G:\src\icu4c-4_4_2-src>c:\tools\timeit.exe devenv icu\source\allinone\allinone.sln /Build "Debug|Win32"


Version Number:   Windows NT 5.1 (Build 2600)
Exit Time:        1:10 pm, Saturday, November 26 2011
Elapsed Time:     0:05:52.397
Process Time:     0:00:13.156
System Calls:     14302984
Context Switches: 5671218
Page Faults:      6210036
Bytes Read:       4090425485
Bytes Written:    1063078424
Bytes Other:      54560737


G:\src\icu4c-4_4_2-src>c:\tools\timeit.exe devenv icu\source\allinone\allinone.sln /Build "Release|Win32"


Version Number:   Windows NT 5.1 (Build 2600)
Exit Time:        1:14 pm, Saturday, November 26 2011
Elapsed Time:     0:03:36.005
Process Time:     0:00:09.062
System Calls:     9138612
Context Switches: 2112111
Page Faults:      4133377
Bytes Read:       3267500813
Bytes Written:    543078480
Bytes Other:      31802906

download boost-log-1.0.zip and extract into boost_1_48 source folder

start build:

call "%VS90COMNTOOLS%/../../vc/bin/vcvars32.bat"
c:\tools\sysinternals\du.exe g:\src\boost_1_48_0 >> buildtime.txt
cd /d G:\src\boost_1_48_0
@echo Update G:\src\boost_1_48_0/tools/build/v2/user-config.jam
call bootstrap.bat


echo "build boost_1_48_0 start" >> buildtime.txt
time /t  >> buildtime.txt
c:\tools\timeit.exe b2.exe --without-log --toolset=msvc stage --build-type=complete -sBZIP2_SOURCE=D:\opensource\bzip2-1.0.5 -sZLIB_SOURCE=D:\opensource\zlib-1.2.5 -sICU_PATH=G:\src\icu4c-4_4_2-src\icu >> msvc90.log


time /t  >> buildtime.txt
b2 --show-libraries >> buildtime.txt
c:\tools\timeit.exe b2.exe --with-log --toolset=msvc stage --build-type=complete define=BOOST_FILESYSTEM_VERSION=2 define=BOOST_ASIO_DISABLE_STD_ARRAY
time /t  >> buildtime.txt
c:\tools\sysinternals\du.exe g:\src\boost_1_48_0 >> buildtime.txt
echo "build finished" >> buildtime.txt


It takes 65minutes building boost without boost.log. It takes 18 minutes building boost.log.

if b2.exe failed to check ICU:

- has_icu builds           : no

check log file G:\src\boost_1_48_0\bin.v2\config.log

Use the following command to check icu:

b2.exe --with-regex --toolset=msvc stage --build-type=complete -sBZIP2_SOURCE=D:\opensource\bzip2-1.0.5 -sZLIB_SOURCE=D:\opensource\zlib-1.2.5 -sICU_PATH=G:\src\icu4c-4_4_2-src\icu -n


<think>好的,我现在需要解决用户提到的CMake找不到boost_python3.10.12配置文件的问题。用户的环境是ROS Humble,Ubuntu,使用Boost 1.74.0和cmake-3.22。首先,我得回忆一下Boost.Python的安装和配置流程。 首先,用户可能已经安装了Boost库,但可能没有安装对应的Python组件。在Ubuntu中,Boost.Python通常以libboost-python-dev这样的包名存在。但用户使用的是特定版本Python 3.10.12,可能需要对应的boost_python3.10版本。但Ubuntu的官方仓库可能没有精确匹配的版本,特别是如果用户从源码安装Boost的话。 接下来,检查用户是否安装了正确的开发包。比如,用户是否安装了libboost-python3.10-dev或者类似的包?参考用户提供的引用[1],他们安装了一些开发工具和库,但里面没有提到boost-python相关的包。所以这可能是一个缺失的依赖项。 然后,如果用户是通过apt安装Boost,可能需要确认包的名字。对于Python 3.10,包名可能是libboost-python3.10-dev。但有时候Ubuntu的包命名可能不完全匹配,比如可能只有libboost-python3-dev,而具体对应到Python3.10的版本可能需要其他处理。如果系统默认安装的是其他版本的Boost.Python,比如针对Python3.8或3.9,这时候CMake可能找不到3.10的配置文件。 另一个可能性是用户自己编译了Boost,但未正确构建Boost.Python组件。在编译Boost时,需要指定Python的版本。例如,使用./bootstrap.sh --with-python=python3.10,然后编译并安装。如果用户没有正确指定Python版本,生成的库文件可能不匹配。 此外,CMake的FindBoost模块在查找时依赖特定的命名规则。Boost 1.74之后,CMake的模块可能有所变化,配置文件的名字可能包含Python版本和ABI标签。例如,boost_python310-variant等。用户需要确保CMake能够找到正确的文件路径。 解决方案可能包括:安装正确的系统包,或者重新编译Boost并指定Python版本,或者在CMakeLists.txt中手动设置Boost_PYTHON_TYPE变量,或者提示CMake查找特定的组件。例如,在CMake中使用find_package(Boost REQUIRED COMPONENTS python310)之类的指令,但需要确定组件名称是否正确。 另外,检查环境变量是否设置正确,如BOOST_ROOT或Boost_DIR,指向正确的安装路径。如果用户自己编译了Boost,可能需要设置这些变量。 最后,可能需要检查CMake的版本是否与Boost版本兼容,但用户用的是cmake-3.22,应该支持Boost 1.74。 总结可能的解决步骤:1. 安装正确的libboost-python3.10-dev;2. 如果不存在,从源码编译Boost并指定Python3.10;3. 在CMake中明确指定Python版本和路径;4. 设置相关环境变量帮助CMake查找。</think>针对CMake找不到$boost\_python3.10.12$配置文件的解决方案: ### 1. 确认PythonBoost版本匹配 * 检查Python版本是否与Boost编译时指定的版本一致,使用$python3 --version$确认版本为3.10.12[^2] * 查看已安装的Boost库:$apt list --installed | grep libboost-python$ ### 2. 安装正确的开发包 ```bash sudo apt-get install libboost-python3.10-dev # Ubuntu官方仓库可能无此精确包名 ``` 若提示包不存在,需手动编译Boost: ```bash wget https://boostorg.jfrog.io/artifactory/main/release/1.74.0/source/boost_1_74_0.tar.gz tar xzf boost_1_74_0.tar.gz cd boost_1_74_0 ./bootstrap.sh --with-python=$(which python3) # 确保指向python3.10解释器 ./b2 toolset=gcc cxxstd=17 python=3.10 # 显式指定Python版本 sudo ./b2 install ``` ### 3. 配置CMake查找路径 在CMakeLists.txt中添加: ```cmake set(Boost_USE_STATIC_LIBS OFF) set(Boost_USE_MULTITHREADED ON) set(Boost_PYTHON_TYPE python310) # 强制指定Python版本标识 find_package(Boost 1.74.0 REQUIRED COMPONENTS python310) ``` ### 4. 设置环境变量 ```bash export BOOST_ROOT=/usr/local/boost_1_74_0 # 指向自定义编译路径 export LD_LIBRARY_PATH=$BOOST_ROOT/lib:$LD_LIBRARY_PATH ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值