在 Linux 下用 C++ 使用/安装库文件,一般分几种情况。下面按最常见场景给你一个清晰、实用的说明。
sudo apt update
sudo apt install libxxx-dev
示例(安装 OpenCV):
sudo apt install libopencv-dev
⚠️ 开发必须用
-dev包(包含头文件和.so)
sudo yum install xxx-devel
# 或
sudo dnf install xxx-devel
示例:
sudo dnf install opencv-devel
sudo pacman -S xxx
假设你安装了 libfoo
#include <foo.h>
int main() {
foo();
}
g++ main.cpp -o main -lfoo
-lfoo 表示链接 libfoo.so/usr/include/usr/lib 或 /usr/lib64假设:
头文件:/opt/foo/include
库文件:/opt/foo/lib
g++ main.cpp -o main \
-I/opt/foo/include \
-L/opt/foo/lib \
-lfoo
.soexport LD_LIBRARY_PATH=/opt/foo/lib:$LD_LIBRARY_PATH
./main
或永久生效(不推荐全局):
sudo echo "/opt/foo/lib" > /etc/ld.so.conf.d/foo.conf
sudo ldconfig
以 CMake 项目为例:
git clone https://github.com/xxx/foo.git
cd foo
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install
默认安装到:
/usr/local/include
/usr/local/lib
编译时:
g++ main.cpp -lfoo
find_package(foo REQUIRED)
add_executable(main main.cpp)
target_link_libraries(main foo)
如果是自定义路径:
cmake -DCMAKE_PREFIX_PATH=/opt/foo ..
| 错误 | 原因 |
|---|---|
fatal error: xxx.h |
没装 -dev 或 -I 错 |
undefined reference |
忘记 -lxxx |
cannot find -lxxx |
-L 路径不对 |
运行时 cannot open shared object |
LD_LIBRARY_PATH 没设 |
我可以直接给你一步一步命令。