在 CentOS 中使用 C++ 链接库文件,通常分为系统库、第三方库、自己写的库几种情况。下面按常见场景说明。
g++ -c xxx.cpp.a.so例如链接 pthread、math 库:
g++ main.cpp -o main -lpthread -lm
说明:
-l 后面跟库名(去掉 lib 和扩展名)libpthread.so → -lpthreadsudo yum install opencv-devel
编译:
g++ main.cpp -o main `pkg-config --cflags --libs opencv`
假设库在:
/home/user/libs/libfoo.so
/home/user/include/foo.h
编译命令:
g++ main.cpp -o main \
-I/home/user/include \
-L/home/user/libs \
-lfoo
参数说明:
-I:头文件路径-L:库文件路径-lfoo:链接 libfoo.sog++ -c foo.cpp -o foo.o
ar rcs libfoo.a foo.o
g++ main.cpp -L. -lfoo -o main
g++ -fPIC -shared foo.cpp -o libfoo.so
g++ main.cpp -L. -lfoo -o main
运行时需要让系统找到 .so:
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
./main
或复制到系统目录:
sudo cp libfoo.so /usr/lib64/
sudo ldconfig
ldd main
查看依赖的 .so 文件。
cannot find -lfoo
✅ 检查:
-L 指定路径libfoo.soerror while loading shared libraries
✅ 解决:
LD_LIBRARY_PATH/etc/ld.so.conf.d/ldconfig如果你有具体库名或报错信息,可以直接发出来,我可以帮你写完整编译命令。