【问题标题】:Caffe install on ubuntu for anaconda with python 2.7 fails with libpng16.so.16 not found使用 python 2.7 在 ubuntu 上为 anaconda 安装 Caffe 失败,找不到 libpng16.so.16
【发布时间】:2015-08-12 10:46:26
【问题描述】:

所以我已经用 python 2.7 安装了 anaconda 并安装了 Caffe 库的所有要求。我确保 opencv 是由

安装的
import cv2

并检查我是否可以运行文档中的几个示例。

现在我下载 caffe,正确配置 makefile.config 并运行 make all。我收到非常奇怪的错误:

make
CXX/LD -o .build_release/tools/upgrade_net_proto_text.bin
/usr/bin/ld: warning: libpng16.so.16, needed by /home/maxkhk/anaconda/lib/libopencv_highgui.so, not found (try using -rpath or -rpath-link)
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_create_read_struct@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_set_interlace_handling@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_set_IHDR@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_get_io_ptr@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_set_longjmp_fn@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_set_gray_to_rgb@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_set_compression_level@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_set_bgr@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_set_filter@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_set_rgb_to_gray@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_init_io@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_destroy_read_struct@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_set_swap@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_get_IHDR@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_set_palette_to_rgb@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_set_compression_strategy@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_get_tRNS@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_write_info@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_set_packing@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_set_read_fn@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_create_info_struct@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_read_end@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_read_update_info@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_write_image@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_write_end@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_set_expand_gray_1_2_4_to_8@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_create_write_struct@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_read_image@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_read_info@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_set_strip_alpha@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_set_write_fn@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_destroy_write_struct@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_error@PNG16_0'
/home/maxkhk/anaconda/lib/libopencv_highgui.so: undefined reference to `png_set_strip_16@PNG16_0'
collect2: error: ld returned 1 exit status
Makefile:560: recipe for target '.build_release/tools/upgrade_net_proto_text.bin' failed
make: *** [.build_release/tools/upgrade_net_proto_text.bin] Error 1

那家伙怎么了?请注意,我最初有 anaconda3 并为它编译了 caffe,但成功但我在 python3 下遇到了很多关于 caffe 的问题,所以我不得不删除它并尝试使用 python 2.7 为 anaconda 设置它。

当然我已经确保 libpng16.so.16 在 anaconda 中:

maxkhk@maxkhk-X550DP:~/anaconda$ find -name libpng16.so.16
./pkgs/libpng-1.6.17-0/lib/libpng16.so.16
./lib/libpng16.so.16
maxkhk@maxkhk-X550DP:~/anaconda$ 

我用谷歌搜索了错误,但没有找到任何与 caffe 相关的内容。

【问题讨论】:

  • 你可能想要包含链接在libopencv_highgui.so 中的所有动态库——我认为ldd 在linux 中会这样做。
  • 对不起,我不擅长Linux,只是终端中的'ldd'吗?还是其他命令?
  • 在终端中应该只是ldd </path/to/libopencv_highgui.so>。我没有使用 linux,所以不太确定。
  • @cel 感谢您提供的线索,在我完成之后,我看到一些库(不是 png 的)在我没有包含的文件夹中。我将它们添加到 makefile.config 并且构建成功。但!在 make all 并使 pycaffe 运行良好之后,我也成功运行了 make test 和 make runtest (它说测试通过了)。但!我无法在我的 anaconda 中导入 caffe。它只是说没有这样的模块
  • @cel 无视。在 Spyder 中,我打开了 tools\pythonpathmanager 并在那里添加了 caffe/python 文件夹。现在工作。请发表您的评论作为答案,以便我接受。

标签: python opencv ubuntu anaconda caffe


【解决方案1】:

我遇到了同样的问题,我通过在我的 Makefile.config 中添加 -rpath 来解决它:

LINKFLAGS := -Wl,-rpath,$(HOME)/anaconda/lib

我认为这是正确的解决方法,因为它 (-rpath) 告诉 GCC 在哪里可以找到其他库(在本例中为 opencv)所依赖的库(libjpeg、libpng)。

【讨论】:

  • @ccppjava ,谢谢您的回答完全有助于解决这个问题,并且由 LINKFLAGSS 解决方案产生。
  • 小心这个解决方案,它可能会导致错误:groups.google.com/forum/#!topic/caffe-users/8erM4hbR110 这是因为 anaconda 可能有比系统一新的库,而不是,我建议编辑 .bashrc 添加 export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:/home/username/anaconda2/lib:$LD_LIBRARY_PATH
【解决方案2】:

根据@cel 的建议 -

ldd libopencv_highgui.so 

显示此库所依赖的文件。其中几个(不是 libpng!)位于我没有包含在 makefile.config 中的文件夹中。将他们的文件夹包含到 MakeFile 构建成功后。注意:在构建 caffe 之后,您可能不会在 Spyder 中进入 PythonPath 管理器并将 caffe 的文件夹添加到其中(或者如果您不使用 anaconda\spyder,则只需将其包含到 pythonpath 中)。

【讨论】:

  • 那么这些文件夹是什么?您将它们包含在配置中的什么位置?
  • 我尝试做同样的事情并将缺少的库添加到 LIB_DIRS,但没有成功。
  • @chiffa 对我来说我必须添加 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /lib/x86_64-linux-gnu/ 并且它有效
  • 感谢您的回复,但它绝对不适合我。我在这里 stackoverflow.com/questions/32405035/… 开始了一个新问题,并在他们的 GitHub 问题跟踪器上填写了一个问题。
【解决方案3】:

添加

LINKFLAGS := -Wl,-rpath,$(HOME)/anaconda/lib

在 Makefile.config 中工作。

【讨论】:

  • 在哪里添加这个?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-05
  • 2017-08-19
  • 1970-01-01
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
相关资源
最近更新 更多