在 Ubuntu 下配置 C++ 库文件,通常分为 系统库、第三方库、自己写的库 三种情况。下面按最常见、最实用的方式给你一个完整说明。
在 Linux 下,C++ 库主要涉及:
| 类型 | 说明 |
|---|---|
| 头文件(.h) | 编译时需要 |
| 库文件(.so / .a) | 链接时需要 |
include 路径 |
头文件所在目录 |
lib 路径 |
库文件所在目录 |
.so:动态库(运行时需要).a:静态库(编译时直接打包)例如安装 opencv:
sudo apt update
sudo apt install libopencv-dev
安装后一般位置:
/usr/include/usr/lib 或 /usr/lib/x86_64-linux-gnu示例:使用 pthread
// test.cpp
#include <pthread.h>
编译:
g++ test.cpp -o test -lpthread
✅ 系统库 不需要指定路径
假设:
/opt/mylib/include/opt/mylib/libg++ main.cpp \
-I/opt/mylib/include \
-L/opt/mylib/lib \
-lmylib \
-o main
说明:
-I:指定头文件路径-L:指定库文件路径-lxxx:链接 libxxx.so 或 libxxx.a.so运行报错:
error while loading shared libraries: libxxx.so
✅ 方法 1:临时生效
export LD_LIBRARY_PATH=/opt/mylib/lib:$LD_LIBRARY_PATH
✅ 方法 2:永久生效(推荐)
sudo vim /etc/ld.so.conf.d/mylib.conf
写入:
/opt/mylib/lib
然后执行:
sudo ldconfig
#pragma once
void hello();
#include "mylib.h"
#include <iostream>
void hello() {
std::cout << "Hello Library" << std::endl;
}
g++ -c mylib.cpp -o mylib.o
ar rcs libmylib.a mylib.o
g++ -fPIC -shared mylib.cpp -o libmylib.so
g++ main.cpp -I./ -L./ -lmylib -o main
cmake_minimum_required(VERSION 3.10)
project(demo)
# 头文件路径
include_directories(${PROJECT_SOURCE_DIR}/include)
# 库路径
link_directories(${PROJECT_SOURCE_DIR}/lib)
# 生成可执行文件
add_executable(demo main.cpp)
# 链接库
target_link_libraries(demo mylib)
构建:
mkdir build
cd build
cmake ..
make
fatal error: xxx.h: No such file or directory
✅ 检查 -I 路径是否正确
cannot find -lxxx
✅ 检查:
-L 路径是否正确.so✅ 使用:
ldd ./main
查看依赖
| 需求 | 命令 |
|---|---|
| 安装库 | apt install libxxx-dev |
| 指定头文件 | -I/path |
| 指定库路径 | -L/path |
| 链接库 | -lxxx |
| 动态库生效 | ldconfig |
| 查看依赖 | ldd |
如果你有 具体库名(如 OpenCV / Boost / CUDA / 自己写的库) 或 报错信息,可以直接贴出来,我可以一步一步帮你配 ✅