在 Ubuntu 上“配置 C++ 库文件”通常分为几种情况,下面按常见场景给你讲清楚,你可以对照自己的需求。
Ubuntu 用 apt 管理库,开发库一般叫 -dev 包。
sudo apt update
sudo apt install g++
sudo apt install libxxx-dev # 例如 libboost-dev
常见例子:
sudo apt install libopencv-dev
sudo apt install libboost-all-dev
sudo apt install libeigen3-dev
g++ main.cpp -o main -lxxx
例如:
g++ main.cpp -o main -lboost_system
Ubuntu 默认:
/usr/include/usr/lib 或 /usr/lib/x86_64-linux-gnu一般 不需要额外配置,直接 -l 即可。
假设:
/home/user/mylib/
├── include/
└── lib/
编译:
g++ main.cpp -o main \
-I/home/user/mylib/include \
-L/home/user/mylib/lib \
-lmylib
-I:头文件路径-L:库文件路径-l:库名(去掉 lib 和 .so/.a)如果编译通过,但运行报:
error while loading shared libraries
解决方法之一:
export LD_LIBRARY_PATH=/home/user/mylib/lib:$LD_LIBRARY_PATH
./main
或永久添加:
sudo vim /etc/ld.so.conf.d/mylib.conf
写入:
/home/user/mylib/lib
然后:
sudo ldconfig
cmake_minimum_required(VERSION 3.10)
project(demo)
find_package(Boost REQUIRED)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(demo main.cpp)
target_link_libraries(demo ${Boost_LIBRARIES})
自定义库:
include_directories(/home/user/mylib/include)
link_directories(/home/user/mylib/lib)
add_executable(demo main.cpp)
target_link_libraries(demo mylib)
pkg-config --libs opencv
pkg-config --cflags opencv
或:
ldconfig -p | grep xxx
.a 是静态库,.so 是动态库g++ -std=c++17 main.cpp
如果你能具体说:
我可以直接给你针对性命令。