在 Linux 下用 C++ 配置(使用)第三方库,一般有几种常见方式。下面从最常用到进阶给你讲清楚,并配示例。
sudo apt update
sudo apt install libopencv-dev
g++ main.cpp -o main `pkg-config --cflags --libs opencv4`
或简写:
g++ main.cpp -o main -lopencv_core -lopencv_imgproc
pkg-config(推荐)很多库都提供 .pc 文件:
pkg-config --libs opencv4
pkg-config --cflags opencv4
CMake 中:
find_package(PkgConfig REQUIRED)
pkg_check_modules(OPENCV REQUIRED opencv4)
target_include_directories(app PRIVATE ${OPENCV_INCLUDE_DIRS})
target_link_libraries(app ${OPENCV_LIBRARIES})
cmake_minimum_required(VERSION 3.10)
project(demo)
find_package(Eigen3 REQUIRED)
add_executable(demo main.cpp)
target_link_libraries(demo Eigen3::Eigen)
find_package(OpenCV REQUIRED)
target_link_libraries(demo ${OpenCV_LIBS})
假设你有:
/home/user/mylib/
├── include/
└── lib/
└── libmylib.so
g++ main.cpp -I/home/user/mylib/include \
-L/home/user/mylib/lib \
-lmylib \
-o main
export LD_LIBRARY_PATH=/home/user/mylib/lib:$LD_LIBRARY_PATH
git clone https://github.com/libexample/lib.git
cd lib
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install
默认安装到:
/usr/local/include
/usr/local/lib
CMake 自动能找到。
| 类型 | 后缀 | 特点 |
|---|---|---|
| 静态库 | .a |
编译进程序 |
| 动态库 | .so |
运行时加载 |
g++ main.cpp -static -lmylib # 静态
✅ 头文件找不到 → -I
✅ 库找不到 → -L
✅ 链接顺序问题(库放后面)
✅ sudo ldconfig 更新动态库缓存
✅ nm libxxx.so 看导出符号
✅ 用 CMake
✅ 用 find_package
✅ 用 target_* 系列命令
✅ 不手动写 -I -L -l
如果你愿意,可以告诉我:
我可以给你针对性完整示例。