发布于2026-07-12 阅读(0)
扫一扫,手机访问
在 Ubuntu 上做 C++ 开发,库的安装和管理几乎是每天都要面对的事。系统自带的包管理器、源码手动编译、第三方工具链——每种方式都有自己的适用场景。下面就把这些主流方法梳理清楚,顺便聊几个常见的坑。

APT 是 Ubuntu 原生包管理器,特别适合那些已经被打包好的库。安装开发包(包含头文件和链接库)的标准操作是:
sudo apt update && sudo apt install libname-dev
如果你只是运行某个程序而需要运行时库,装不带 -dev 的版本就行,比如 sudo apt install sqlite3。
几个常见库的安装示例:
sudo apt install libssl-devsudo apt install libopencv-devsudo apt install libboost-all-devsudo apt install sqlite3搜索可用包用 apt search ,卸载用 sudo apt remove 。别忘了顺带装好构建工具链:sudo apt install build-essential,它会把 gcc/g++、make 等基础工具一网打尽。
项目规模上来以后,手动指定库路径显然不现实。CMake 的 find_package 就是干这个的。在 CMakeLists.txt 里这样写:
find_package(Boost REQUIRED COMPONENTS system)
target_link_libraries(MyProject Boost::system)
find_package(OpenSSL REQUIRED)
target_link_libraries(MyProject ${OPENSSL_LIBRARIES})
整个构建流程就是经典的:
mkdir build && cd build && cmake .. && make
只要库装到了标准位置,CMake 通常能自动找到。如果找不到,多数情况是你没装对应的 -dev 包。
当项目需要在不同平台上保持一致(比如 Windows 和 Linux 都要编译),或者你想用某个库的特定版本,APT 就不太够用了。这时候可以试试 vcpkg 或 Conan。
vcpkg 是微软开源的跨平台管理器,对版本控制和可移植性支持得很好。安装方式:
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
集成到系统后,直接 ./vcpkg install sqlite3 就能装库。在 CMake 里使用时,通过指定工具链文件(-DCMAKE_TOOLCHAIN_FILE=.../vcpkg/scripts/buildsystems/vcpkg.cmake)即可。还可以用 triplet 指定平台,比如 openssl:x64-linux。
Conan 则是另一个热门选择,尤其适合团队协作和 CI 场景。安装方式:
pip install conan
conan new myproject/ --detect
cd myproject
然后在项目里放一个 conanfile.txt 或 conanfile.py 描述依赖,运行 conan install . 即可。它会自动下载二进制包并生成 CMake 配置文件。
有些库官方没有打包,或者你需要自定义编译选项,手动编译就成了必要手段。典型步骤是:
wget
tar xzf
cd
mkdir build && cd build
cmake .. && make
sudo make install
默认安装到 /usr/local/lib 和 /usr/local/include。好处是完全可控,坏处是你得自己处理依赖关系、版本冲突和后期卸载。建议在编译前先看看文档里推荐的 cmake 参数,比如 -DCMAKE_INSTALL_PREFIX 可以自定义安装路径。
遇到“找不到头文件”或“找不到库”时,先确认对应的 -dev 包有没有装。用 pkg-config --list-all | grep 可以快速检查某个库是否提供了 pkg-config 支持。在 CMake 里最好用 find_package 加上 REQUIRED,这样编译时能直接报错,避免运行时才暴露问题。
多版本并存是个经典麻烦。系统库一般在 /lib、/usr/lib,手动安装的常常在 /usr/local/lib。如果两个路径下都有同名库,链接器会按搜索顺序先找到哪个就用哪个。遇到这种情况,可以通过 CMAKE_PREFIX_PATH 或 LD_LIBRARY_PATH 来指定优先路径。另外,别忘了检查 build-essential 是否装全——很多“库找不到”的根源其实是连编译器都还没到位。
以上这些方法,基本覆盖了 Ubuntu 下 C++ 库管理的常见场景。具体选哪种,取决于你的项目复杂度、团队协作方式以及你对版本控制的要求。从 APT 开始,遇到跨平台需求再引入 vcpkg 或 Conan,需要精细控制时再手动编译——这条路线大概率能帮你避开大多数坑。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8