在 Linux 下使用 C++ 库,一般分三种情况:系统自带库、第三方库、自己写的库。下面从“概念 → 编译 → 常见示例”给你一个清晰、实用的说明。
| 类型 | 说明 | 文件后缀 |
|---|---|---|
| 静态库 | 编译时直接打包进程序 | .a |
| 动态库 | 运行时加载 | .so |
写代码 → 包含头文件 → 编译时链接库 → 运行
pthread(多线程)#include <pthread.h>
g++ main.cpp -o main -lpthread
✅ -l 表示链接库
✅ pthread 对应 libpthread.so
sudo apt install libboost-dev
#include <boost/algorithm/string.hpp>
g++ main.cpp -o main
(Boost 大部分是头文件库,不需要 -l)
如果是 Boost.System:
g++ main.cpp -o main -lboost_system
#pragma once
void hello();
#include <iostream>
void hello() {
std::cout << "Hello Library" << std::endl;
}
g++ -c mylib.cpp -o mylib.o
ar rcs libmylib.a mylib.o
使用:
g++ main.cpp -L. -lmylib -o main
g++ -fPIC -shared mylib.cpp -o libmylib.so
使用:
g++ main.cpp -L. -lmylib -o main
运行前告诉系统库位置:
export LD_LIBRARY_PATH=.
./main
| 参数 | 含义 |
|---|---|
-I |
头文件路径 |
-L |
库文件路径 |
-l |
库名(去掉 lib 和后缀) |
-std=c++17 |
C++ 标准 |
示例:
g++ main.cpp -I./include -L./lib -lmylib -std=c++17
g++ main.cpp $(pkg-config --cflags --libs opencv4)
我可以直接给你“可复制运行”的示例。