在 CentOS 上配置 C++ 库路径,通常分为 运行时库路径 和 编译链接时库路径 两种情况。下面按常见场景系统说明。
CentOS 下常见库路径:
| 类型 | 路径 |
|---|---|
| 系统库 | /lib64、/usr/lib64 |
| 用户安装库 | /usr/local/lib64、/usr/local/lib |
| 自定义路径 | /opt/xxx/lib |
-L 指定库搜索路径g++ main.cpp -o app -L/opt/mylib/lib -lmylib
-L:告诉链接器去哪里找 .so / .a-l:指定库名(去掉 lib 和扩展名)✅ 只对本次编译有效
export LIBRARY_PATH=/opt/mylib/lib:$LIBRARY_PATH
g++ main.cpp -o app -lmylib
⚠️ 只影响编译阶段
/etc/ld.so.confsudo vim /etc/ld.so.conf.d/mylib.conf
内容:
/opt/mylib/lib
sudo ldconfig
✅ 永久生效 ✅ 系统级推荐方式
export LD_LIBRARY_PATH=/opt/mylib/lib:$LD_LIBRARY_PATH
./app
❌ 不安全
❌ 不推荐生产环境
g++ main.cpp -I/opt/mylib/include
或:
export CPLUS_INCLUDE_PATH=/opt/mylib/include:$CPLUS_INCLUDE_PATH
include_directories(/opt/mylib/include)
link_directories(/opt/mylib/lib)
add_executable(app main.cpp)
target_link_libraries(app mylib)
ldd ./app
ldconfig -v
error while loading shared libraries原因:运行时找不到 .so
✅ 解决:
sudo ldconfig
或确认:
echo $LD_LIBRARY_PATH
cannot find -lxxx原因:链接时找不到库
✅ 解决:
-L/path/to/lib
| 场景 | 方法 |
|---|---|
| 编译链接 | -L / LIBRARY_PATH |
| 运行加载 | /etc/ld.so.conf.d/*.conf + ldconfig |
| 临时测试 | LD_LIBRARY_PATH |
| 头文件 | -I / CPLUS_INCLUDE_PATH |
如果你有 具体报错信息 或 某个库(如 OpenCV、Boost、CUDA),可以贴出来,我可以给你精确配置方案。