Ubuntu下C++版Boost安装问题:无库文件及编译必要性咨询
问题解答
为什么安装后只有b2相关目录,没有Boost的include和lib?
你之前操作的是Boost.Build构建工具的安装,而非Boost库本身的编译安装:
- 你进入的
tools/build目录是用来构建Boost.Build工具的,执行bootstrap.sh和b2 install只会生成b2的执行文件(bin/b2)和工具配置文件(share/b2),自然不会产出Boost库的头文件和编译后的库文件。
正确的Boost库安装步骤是回到Boost源码根目录执行:
- 运行根目录下的
./bootstrap.sh(如果已经通过tools/build安装了b2,也可以直接用该b2) - 执行
./b2 install --prefix="my_home_directory"
这样才会将Boost的头文件复制到指定prefix的include目录,同时编译并安装需要编译的Boost库到lib目录。
为什么Boost大多是头文件实现,还需要编译?
Boost确实有大量仅头文件组件(如boost::algorithm、boost::optional),这类组件直接包含头文件就能在项目中使用,但仍有部分组件必须编译成静态/动态库才能使用,比如:
boost::thread(线程库)boost::filesystem(文件系统库)boost::program_options(命令行解析库)boost::regex(正则表达式库)
这些组件依赖平台相关的底层接口,或涉及大量需要提前编译的逻辑,因此必须经过编译步骤。另外,部分仅头文件组件也支持预编译选项,用来加快项目的编译速度,不过这并非强制要求。
内容的提问来源于stack exchange,提问作者GoodToLearn
相关产品推荐
相关产品推荐

