Linux cmake 静态链接boost库

本文介绍如何在Linux使用CMake静态链接Boost库,以避免动态链接导致的环境一致性要求。示例中展示了将编译好的Boost静态库放入指定目录,并在CMakeLists.txt中使用find_package方法来链接库,同时提供了编译和执行的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

使用动态链接编译的二进制程序在执行时要求开发环境与生产环境严格一致,因此我们更倾向于使用静态链接的方式链接第三方库。本文介绍如何在Linux 环境下使用cmake 静态链接Boost 库。

示例

我们将编译好boost静态库.a 文件和头文件放入third_party 目录,在CMakeLists.txt 中使用find_package 方法查找boost静态库。
我自己在CentOS 6.6 编译的boost 1.63.0 静态库以及头文件 boost static library

// 加入boost头文件路径
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/third_party/boost_1_63_0/include)
// 设置boost使用静态链接
set(Boost_USE_STATIC_LIBS ON)
// 设置需要的boost 组件
set(BOOST_COMPONENTS date_time chrono filesystem iostreams program_options regex system thread unit_test_framework)
// 使用cmake find_packag
### 如何在 Linux 环境下使用 CMake 编译 Boost 要在 Linux 下通过 CMake 使用 Boost ,可以按照以下方法操作。以下是详细的说明: #### 安装 Boost 如果尚未安装 Boost,则可以通过包管理器快速安装预编译版本的 Boost : ```bash sudo apt-get update && sudo apt-get install libboost-all-dev -y ``` 这一步适用于 Ubuntu 或 Debian 类系统[^1]。 对于特定版本的需求(如 1.66.0),可以选择从源码编译 Boost [^2]。具体过程包括下载源码、配置构建选项以及完成编译和安装。 --- #### 创建项目结构 创建一个新的目录作为项目的根目录,并初始化必要的文件结构。例如: ``` my_project/ ├── CMakeLists.txt └── main.cpp ``` `main.cpp` 是一个简单的测试程序,用于验证 Boost 的功能是否正常加载。示例代码如下: ```cpp #include <iostream> #include <boost/filesystem.hpp> int main() { namespace fs = boost::filesystem; std::cout << "Current path is: " << fs::current_path() << std::endl; return 0; } ``` --- #### 配置 `CMakeLists.txt` 为了使 CMake 能够找到并链接 Boost ,在 `CMakeLists.txt` 中需加入相应的命令来定位所需的组件。下面是一个完整的例子: ```cmake cmake_minimum_required(VERSION 3.10) project(MyBoostProject LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Boost REQUIRED COMPONENTS system filesystem) if (Boost_FOUND) include_directories(${Boost_INCLUDE_DIRS}) add_executable(HelloWorld main.cpp) target_link_libraries(HelloWorld PRIVATE ${Boost_LIBRARIES} Boost::system Boost::filesystem) endif() ``` 上述脚本完成了以下几个任务: - 设置最低支持的 CMake 版本为 3.10; - 声明项目名称及其使用的编程语言; - 请求至少 C++17 标准的支持; - 查找指定的 Boost 组件 (`system`, `filesystem`) 并确认其存在性[^3]; - 如果找到了 Boost 则继续定义目标可执行文件并将它与所需关联起来[^4]。 --- #### 构建与运行 进入项目所在路径后依次执行下列命令以生成 Makefile 和最终的应用程序二进制文件: ```bash mkdir build && cd build cmake .. make ./HelloWorld ``` 成功的话应该会看到当前工作目录被打印出来,证明 Boost 功能调用无误。 --- #### 注意事项 当遇到找不到某些头文件或者静态/动态的情况时,请检查环境变量 PATH 及 LD_LIBRARY_PATH 是否正确指向了 Boost 所处位置;另外也可以尝试重新设置 BOOST_ROOT 来帮助 CMake 更精确地探测到依赖项的位置。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值