【问题标题】:cannot find -lopencv_contrib cannot find -lopencv_legacy找不到 -lopencv_contrib 找不到 -lopencv_legacy
【发布时间】:2019-07-23 01:57:10
【问题描述】:

我已经安装了opencv,它编译了100%,我运行了一个命令: pkg-config --cflags --libs opencv 它的输出是:-I/usr/include/opencv -I/usr/include/opencv4 -lopencv_calib3d -lopencv_imgproc -lopencv_contrib -lopencv_legacy -lopencv_core -lopencv_ml -lopencv_features2d -lopencv_objdetect -lopencv_flann -lopencv_video -lopencv_highgui

但是当我尝试编译一个 c++ 代码时,它给出了找不到错误, 我不知道该怎么办。 谢谢..

~/cpp_test$

g++ main.cpp -o output `pkg-config --cflags --libs opencv`
/usr/bin/x86_64-linux-gnu-ld: cannot find -lopencv_contrib
/usr/bin/x86_64-linux-gnu-ld: cannot find -lopencv_legacy
collect2: error: ld returned 1 exit status

【问题讨论】:

  • 检查opencv_contrib.soopencv_legacy.so是否在/usr/lib文件夹中,如果没有,在/usr/lib中创建指向实际库文件的符号链接

标签: c++ opencv ubuntu-18.04


【解决方案1】:

如果您安装了 OpenCV 4,我相信您遇到了和我一样的问题。

解决方案其实很简单,你只需要运行

g++ main.cpp -o output `pkg-config --cflags --libs opencv4`

而不是

g++ main.cpp -o output `pkg-config --cflags --libs opencv`

【讨论】:

    【解决方案2】:

    在安装 Opencv 之后,必须进行符号链接才能将库链接到已知的库位置。 在终端 sudo ldconfig 上尝试命令,以动态链接库。

    然后编译g++ main.cpp -o output $(pkg-config --cflags --libs opencv)

    【讨论】:

    • 我已经完成了所有步骤,然后我完成了“sudo ldconfig”。编译 c++ 代码我使用了完全相同的命令
    • /cpp_test$ g++ main.cpp -o output $(pkg-config --cflags --libs opencv) ** **输出:/usr/bin/x86_64-linux-gnu -ld: 找不到 -lopencv_contrib /usr/bin/x86_64-linux-gnu-ld: 找不到 -lopencv_legacy collect2: 错误: ld 返回 1 个退出状态
    • 问题很奇怪。搜索 Opencv 构建文件夹并尝试查找 libopencv_contrib.solibopencv_legacy.so。找到后,执行sudo ln /usr/bin/x86_64-linux-gnu-ld/libopencv_contrib.so /usr/bin/x86_64-linux-gnu-ld/libopencv_legacy.so,然后编译代码。如果它不起作用,请尝试卸载并重新安装 opencv。
    猜你喜欢
    • 2015-03-20
    • 2021-06-19
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 2021-07-13
    • 1970-01-01
    相关资源
    最近更新 更多