Ubuntu20.04编译OpenCV项目报错/usr/bin/ld无法找到链接库求助
核心问题原因
gcc/g++ 的 -l 链接参数会自动为传入的库名添加 lib 前缀和 .so 后缀,你使用 -llibopencv_core 时,链接器会尝试查找名为 liblibopencv_core.so 的文件,和 /usr/local/lib 下实际存在的 libopencv_core.so 命名不匹配,因此抛出找不到库的错误。
直接修复方案
将编译命令中所有 -llibopencv_xxx 格式的参数统一修改为 -lopencv_xxx,修改后的可用命令如下:
g++ --std=c++17 -g opencv/Basic.cpp -o output -I/usr/local/include/opencv4 -L/usr/local/lib/ -lopencv_calib3d -lopencv_core -lopencv_dnn -lopencv_features2d -lopencv_flann -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_video -lopencv_videoio
更简便的编译方案
可以通过 pkg-config 自动生成OpenCV的头文件、链接库参数,无需手动罗列所有依赖,避免拼写错误:
- 先确认pkg-config能识别OpenCV配置,执行命令:
正常会输出你安装的OpenCV版本号。pkg-config --modversion opencv4 - 简化后的编译命令:
g++ --std=c++17 -g opencv/Basic.cpp -o output `pkg-config --cflags --libs opencv4`
如果pkg-config提示找不到opencv4配置,执行以下命令临时添加配置路径:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
需要永久生效的话,把上述命令添加到~/.bashrc文件末尾,执行source ~/.bashrc即可生效。
异常排查步骤
如果修改后依然报错,可按以下步骤确认环境:
- 执行
ls /usr/local/lib | grep libopencv_core.so,确认目录下确实存在OpenCV动态库文件 - 执行
ldconfig -p | grep opencv_core,确认系统动态库缓存已加载OpenCV相关库
内容的提问来源于stack exchange,提问作者userDtrm
相关产品推荐
相关产品推荐

