首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复Linker的断裂路径?

如何修复Linker的断裂路径?
EN

Ask Ubuntu用户
提问于 2018-02-11 23:24:11
回答 1查看 2.9K关注 0票数 2

我正试图从一个源代码在我的Ubuntu16.04上构建一个回购程序,一切都很顺利,直到它到达链接到OpenCV的文件为止。

我得到以下错误:

代码语言:javascript
复制
/usr/bin/ld: cannot find -lIlmImf
/usr/bin/ld: cannot find -llibjasper
/usr/bin/ld: cannot find -llibtiff
/usr/bin/ld: cannot find -llibpng
/usr/bin/ld: cannot find -llibjpeg
/usr/bin/ld: cannot find -lzlib
collect2: error: ld returned 1 exit status
Makefile:305: recipe for target 'lib/libmxnet.so' failed
make: *** [lib/libmxnet.so] Error 1

所以我试着检查链接器到底在做什么。我打字

代码语言:javascript
复制
ld - llibjpeg --verbose 

并得到了

代码语言:javascript
复制
attempt to open //usr/local/lib/x86_64-linux-gnu/liblibjpeg.so failed
attempt to open //usr/local/lib/x86_64-linux-gnu/liblibjpeg.a failed
attempt to open //lib/x86_64-linux-gnu/liblibjpeg.so failed
attempt to open //lib/x86_64-linux-gnu/liblibjpeg.a failed
attempt to open //usr/lib/x86_64-linux-gnu/liblibjpeg.so failed
attempt to open //usr/lib/x86_64-linux-gnu/liblibjpeg.a failed
attempt to open //usr/local/lib64/liblibjpeg.so failed
attempt to open //usr/local/lib64/liblibjpeg.a failed
attempt to open //lib64/liblibjpeg.so failed
attempt to open //lib64/liblibjpeg.a failed
attempt to open //usr/lib64/liblibjpeg.so failed
attempt to open //usr/lib64/liblibjpeg.a failed
attempt to open //usr/local/lib/liblibjpeg.so failed
attempt to open //usr/local/lib/liblibjpeg.a failed
attempt to open //lib/liblibjpeg.so failed
attempt to open //lib/liblibjpeg.a failed
attempt to open //usr/lib/liblibjpeg.so failed
attempt to open //usr/lib/liblibjpeg.a failed
attempt to open //usr/x86_64-linux-gnu/lib64/liblibjpeg.so failed
attempt to open //usr/x86_64-linux-gnu/lib64/liblibjpeg.a failed
attempt to open //usr/x86_64-linux-gnu/lib/liblibjpeg.so failed
attempt to open //usr/x86_64-linux-gnu/lib/liblibjpeg.a failed
ld: cannot find -llibjpeg

正如我们所看到的,链接器不是在寻找正确的文件!另一方面,如果我键入

代码语言:javascript
复制
ld - ljpeg --verbose 

我看到这个:

代码语言:javascript
复制
attempt to open //usr/local/lib/x86_64-linux-gnu/libjpeg.so failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libjpeg.a failed
attempt to open //lib/x86_64-linux-gnu/libjpeg.so failed
attempt to open //lib/x86_64-linux-gnu/libjpeg.a failed
attempt to open //usr/lib/x86_64-linux-gnu/libjpeg.so succeeded
-ljpeg (//usr/lib/x86_64-linux-gnu/libjpeg.so)
libc.so.6 needed by //usr/lib/x86_64-linux-gnu/libjpeg.so
found libc.so.6 at //lib/x86_64-linux-gnu/libc.so.6
ld-linux-x86-64.so.2 needed by //lib/x86_64-linux-gnu/libc.so.6
found ld-linux-x86-64.so.2 at //lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
ld: warning: cannot find entry symbol _start; not setting start address

所以libjpeg库就在那里,链接器只是在寻找一个错误的文件。

在我的makefile里

代码语言:javascript
复制
ifeq ($(USE_OPENCV), 1)
        CFLAGS += -DMXNET_USE_OPENCV=1 $(shell pkg-config --cflags opencv)
        LDFLAGS += $(filter-out -lopencv_ts, $(shell pkg-config --libs opencv))
        BIN += bin/im2rec

由shell脚本pkg-config --cflags opencvpkg-config --libs opencv指示的路径是正确的。

如果能帮忙修理,我将不胜感激。

编辑:我在make uninstall源代码文件夹中运行OpenCV。之后,构建成功地通过了。很奇怪,好像是OpenCV搞砸了符号链接。我之前玩过opencv.pc文件,路径丢失或错误。

EN

回答 1

Ask Ubuntu用户

发布于 2018-02-12 09:54:35

我不明白你哪里出问题了。我已经成功地编译了它(即使没有sudo apt-get build-dep libopencv-dev):

代码语言:javascript
复制
wget https://github.com/opencv/opencv/archive/2.4.13.5.zip
unzip 2.4.13.5.zip
cd opencv-2.4.13.5
mkdir build
cd build
cmake ..
make -j16
sudo make install

然后pkg-config --libs opencv显示以下内容:

pkg-config --cflags opencv

-I/usr/local/include/opencv -I/usr/local/include

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1005291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档