温馨提示×

centos下c++怎样链接库文件

小樊
43
2026-10-17 15:36:34
栏目: 编程语言

在 CentOS 下用 C++ 链接库文件(静态库 .a 或动态库 .so),通常有以下几种常见方式。下面从编译命令、环境变量、CMake三个层面说明。


一、使用 g++ 直接链接(最常用)

1️⃣ 链接系统库

g++ main.cpp -o main -lpthread
  • -l 后面是库名(去掉 lib 和扩展名)
  • 例如:libpthread.so → -lpthread

2️⃣ 链接自定义库(指定路径)

假设:

libmylib.so
/usr/local/lib/
g++ main.cpp -o main -L/usr/local/lib -lmylib
  • -L:库文件所在目录
  • -l:库名

3️⃣ 链接静态库

g++ main.cpp -o main /path/libmylib.a

或

g++ main.cpp -o main -L/path -lmylib -static

二、运行时找不到 .so 的解决方法

编译通过但运行报错:

error while loading shared libraries: libmylib.so

方法 1:设置 LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
./main

方法 2:写入系统配置(推荐)

sudo vim /etc/ld.so.conf.d/mylib.conf

写入:

/usr/local/lib

然后执行:

sudo ldconfig

三、使用 CMake 链接库(项目推荐)

CMakeLists.txt 示例

cmake_minimum_required(VERSION 3.10)
project(demo)

add_executable(demo main.cpp)

# 指定库路径
link_directories(/usr/local/lib)

# 链接库
target_link_libraries(demo mylib)

或显式写全路径:

target_link_libraries(demo /usr/local/lib/libmylib.so)

四、查看库依赖(排错用)

ldd ./main

查看是否成功链接 .so


五、常见坑提醒

✅ 库名顺序有讲究(被依赖的库放后面)
✅ CentOS 默认 gcc 较老,注意 C++11/14/17 支持
✅ 动态库建议用 ldconfig,不要只靠环境变量


如果你有:

  • 具体库名(如 OpenCV / protobuf / 自研库)
  • CentOS 版本(7 / 8 / Stream)
  • 静态还是动态

可以告诉我,我可以给你针对性命令。

0 踩