【发布时间】:2014-02-27 19:31:21
【问题描述】:
我使用 cmake 在 ubuntu 12.04 上安装了 opencv 2.4.3。安装时,.so 文件放在 /usr/local/lib 目录中。当我使用 .so 文件的默认位置(即 /usr/local/lib)在终端中使用以下行编译我的代码时,它可以正常工作
g++ fileName.cpp -lopencv_core -lopencv_highgui -lopencv_imgproc
我正在尝试使用共享对象文件。我从 /usr/local/bin 复制了所需的共享对象文件,并将它们放在新文件夹位置 /home/nishant/Desktop/lib 中。我复制了以下文件及其各自的 .so.2.4 和 .so.2.4.3 文件:
1) libopencv_core.so
2) libopencv_highgui.so
3) libopencv_imgproc.so
然后我分别将名称更改为 libcore.so 、 libhighgui.so 和 libimgproc.so 。我更改了它们的名称,以便不应该从 /usr/local/lib 使用旧的 .so 文件。现在,当我尝试使用新文件夹位置中的共享对象文件编译我的代码时,我收到以下错误:
终端命令:
g++ filename.cpp -L/home/nishant/Desktop/lib -lcore -lhighgui -limgproc
错误:
/usr/bin/ld: cannot find -lcore
/usr/bin/ld: cannot find -lhighgui
/usr/bin/ld: cannot find -limgproc
collect2: ld returned 1 exit status
有趣的是,以下工作:
g++ filename.cpp -L/home/nishant/Desktop/lib -lopencv_core -lopencv_highgui -lopencv_imgproc
原因:正在使用 /usr/local/lib 中的 .so 文件。
我的问题:如何使用新文件夹位置中的 .so 文件来使我的代码正常工作。
【问题讨论】:
-
你确定 /home/nishant/Desktop/lib/libcore.so 是实际的库文件,或者如果不是,符号链接指向正确的路径?如果您只是重命名符号链接,您将不会更改它们的目标,您将必须重新创建指向重命名目标的链接。使用
ls -l列出符号链接目标。
标签: c++ linux opencv ubuntu shared-libraries