在 Ubuntu 下用 C++ 管理库,通常可以从系统包管理、头文件与链接、构建系统、版本管理几个层面来理解。下面给你一个比较实用、循序渐进的说明。
Ubuntu 自带 apt,绝大多数常见 C++ 库都可以直接安装。
apt search <库名>
# 例如
apt search protobuf
C++ 需要 dev 包(包含头文件和 .so / .a):
sudo apt install libprotobuf-dev
常见命名规则:
libxxx-dev:开发用(头文件 + 链接库)libxxx:运行时库dpkg -L libprotobuf-dev
通常:
/usr/include/usr/lib/x86_64-linux-gnug++ main.cpp -o app -lprotobuf
-l 后面是库名(去掉 lib 和扩展名)/usr/include,无需额外指定g++ main.cpp -I/path/to/include -L/path/to/lib -lxxx
很多库提供 .pc 文件:
pkg-config --cflags --libs protobuf
使用方式:
g++ main.cpp -o app $(pkg-config --cflags --libs protobuf)
find_package(Protobuf REQUIRED)
target_link_libraries(app PRIVATE protobuf)
或手动:
include_directories(/path/to/include)
link_directories(/path/to/lib)
target_link_libraries(app xxx)
CXX = g++
CXXFLAGS = $(shell pkg-config --cflags protobuf)
LDFLAGS = $(shell pkg-config --libs protobuf)
app: main.cpp
$(CXX) main.cpp -o app $(CXXFLAGS) $(LDFLAGS)
.so):体积小,运行时依赖.a):打包进可执行文件指定静态链接:
g++ main.cpp -static -lxxx
查看依赖:
ldd app
./configure
make
sudo make install
/opt 或 ~/localCMAKE_PREFIX_PATH例如 Conan:
conan install . --build=missing
fatal error: xxx.h: No such file or directory
→ 没装 -dev 包
cannot find -lxxx
→ 没装库或 -L 路径错
.soerror while loading shared libraries
解决:
sudo ldconfig
或设置:
export LD_LIBRARY_PATH=/path/to/lib
✅ 新手:
apt 装库 + g++/CMake
✅ 项目级:
CMake + 系统库或 Conan/vcpkg
✅ 不推荐:
手动 copy .so 到系统目录
如果你有具体库(比如 OpenCV、Boost、protobuf、SQLite),或者具体报错,可以直接说,我可以给你针对性步骤。