在 Ubuntu 上配置 C++ 库文件,通常分为几种常见场景。下面按由浅入深、从“使用库”到“自己写库”来说明,你可以按需查看。
sudo apt update
sudo apt install build-essential
安装常用库示例:
# OpenCV
sudo apt install libopencv-dev
# Boost
sudo apt install libboost-all-dev
# SSL
sudo apt install libssl-dev
# 数学库(一般自带)
sudo apt install libm-dev
假设使用 libexample.so
// main.cpp
#include <example.h>
int main() {
example_func();
}
编译:
g++ main.cpp -lexample -o main
常见参数说明:
| 参数 | 作用 |
|---|---|
-I |
指定头文件路径 |
-L |
指定库文件路径 |
-l |
链接库(去掉 lib 和 .so) |
示例:
g++ main.cpp -I/usr/local/include -L/usr/local/lib -lmylib -o main
git clone https://github.com/xxx/xxx.git
cd xxx
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install
默认安装位置通常是:
/usr/local/include
/usr/local/lib
sudo ldconfig
如果库在 /usr/local/lib 仍找不到,检查:
cat /etc/ld.so.conf.d/*.conf
必要时添加:
echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/local.conf
sudo ldconfig
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
// mylib.h
#pragma once
void hello();
// mylib.cpp
#include <iostream>
#include "mylib.h"
void hello() {
std::cout << "Hello Library" << std::endl;
}
g++ -c mylib.cpp -o mylib.o
ar rcs libmylib.a mylib.o
使用:
g++ main.cpp libmylib.a -o main
g++ -fPIC -shared mylib.cpp -o libmylib.so
使用:
g++ main.cpp -L. -lmylib -o main
运行前:
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
./main
cmake_minimum_required(VERSION 3.10)
project(mylib)
add_library(mylib SHARED mylib.cpp)
install(TARGETS mylib DESTINATION lib)
install(FILES mylib.h DESTINATION include)
使用:
mkdir build && cd build
cmake ..
make
sudo make install
fatal error: xxx.h: No such file or directory
✅ 解决:
g++ -I/path/to/include
cannot find -lxxx
✅ 解决:
g++ -L/path/to/lib
error while loading shared libraries
✅ 解决:
sudo ldconfig
Ubuntu 配置 C++ 库 = 安装 / 编译库 → 指定头文件和库路径 → 链接 → 让系统找到动态库
如果你有具体库名(如 OpenCV、Boost、Eigen、CUDA、自己写的库),可以告诉我,我可以给你精确到命令级别的配置方案。