温馨提示×

linux c++怎样配库文件

小樊
34
2026-10-25 15:11:38
栏目: 编程语言

在 Linux 下用 C++ 使用“库文件”(静态库 .a 或动态库 .so)通常包含 三步:

  1. 准备库文件(或安装库)
  2. 编译时指定头文件路径和库路径
  3. 运行(动态库还需指定运行时路径)

下面按常见场景给你一个清晰说明。


一、库的种类

类型 后缀 特点
静态库 .a 编译时直接打进可执行文件
动态库 .so 运行时加载,体积小

二、使用系统已安装的库(最常见)

例如使用 pthread、math、opencv 等

1️⃣ 包含头文件

#include <pthread.h>
#include <opencv2/opencv.hpp>

2️⃣ 编译时链接库

g++ main.cpp -o main -lpthread
g++ main.cpp -o main `pkg-config --cflags --libs opencv4`

说明:

  • -lxxx 表示链接 libxxx.so
  • 系统库一般在 /usr/lib 或 /usr/local/lib

三、使用自己编译的库(.a / .so)

假设目录结构:

project/
├── include/
│   └── mylib.h
├── lib/
│   ├── libmylib.a
│   └── libmylib.so
└── main.cpp

1️⃣ 编译静态库(示例)

g++ -c mylib.cpp -Iinclude
ar rcs libmylib.a mylib.o

2️⃣ 编译动态库(示例)

g++ -fPIC -shared mylib.cpp -Iinclude -o libmylib.so

四、编译时指定库路径

g++ main.cpp -Iinclude -Llib -lmylib -o main

参数解释:

  • -Iinclude:头文件路径
  • -Llib:库文件路径
  • -lmylib:链接 libmylib

⚠️ 顺序很重要:

g++ main.cpp -lmylib   # ❌ 可能报错
g++ main.cpp -Llib -lmylib  # ✅

五、运行动态库程序

方式一:临时生效

export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH
./main

方式二:永久配置(推荐)

sudo cp libmylib.so /usr/local/lib
sudo ldconfig

然后直接运行:

./main

六、CMake 配置(推荐方式)

CMakeLists.txt 示例

cmake_minimum_required(VERSION 3.10)
project(demo)

include_directories(${CMAKE_SOURCE_DIR}/include)
link_directories(${CMAKE_SOURCE_DIR}/lib)

add_executable(main main.cpp)
target_link_libraries(main mylib)

七、常见错误

❌ cannot find -lmylib
→ 检查 -L 路径和库名(去掉 lib 和 .so)

❌ undefined reference
→ 链接顺序错误,或没加 -l

❌ 运行时 cannot open shared object
→ LD_LIBRARY_PATH 或 ldconfig 没配置


如果你有 具体库名(如 OpenCV、Boost、自己写的库)或 报错信息,可以直接发给我,我可以按你的情况写完整示例。

0 踩