Не удается найти lhdf5 при установке caffe

#ubuntu #caffe #hdf5

#ubuntu #caffe #hdf5

Вопрос:

Я получаю это сообщение об ошибке при попытке запустить файл make для caffe.

 LD -o .build_release/lib/libcaffe.so.1.0.0-rc3
/usr/bin/ld: cannot find -lhdf5
collect2: error: ld returned 1 exit status
Makefile:567: recipe for target '.build_release/lib/libcaffe.so.1.0.0-rc3' failed
make: *** [.build_release/lib/libcaffe.so.1.0.0-rc3] Error 1
  

Я пробовал символическую ссылку в соответствии с этими инструкциями, но безрезультатно. Я прочитал другие сообщения о hdf5 и посмотрел символические ссылки в /usr / lib /x86_64-linux-gnu.

 drwxr-xr-x  3 root root     4096 Aug 29 16:43 hdf5
-rw-r--r--  1 root root  6075302 Apr  5  2016 libhdf5_cpp.a
lrwxrwxrwx  1 root root       21 Apr  5  2016 libhdf5_cpp.so -> libhdf5_cpp.so.11.0.0
lrwxrwxrwx  1 root root       21 Apr  5  2016 libhdf5_cpp.so.11 -> libhdf5_cpp.so.11.0.0
-rw-r--r--  1 root root   402080 Apr  5  2016 libhdf5_cpp.so.11.0.0
-rw-r--r--  1 root root    40108 Apr  5  2016 libhdf5_hl_cpp.a
lrwxrwxrwx  1 root root       24 Apr  5  2016 libhdf5_hl_cpp.so -> libhdf5_hl_cpp.so.11.0.0
lrwxrwxrwx  1 root root       24 Apr  5  2016 libhdf5_hl_cpp.so.11 -> libhdf5_hl_cpp.so.11.0.0
-rw-r--r--  1 root root    14688 Apr  5  2016 libhdf5_hl_cpp.so.11.0.0
lrwxrwxrwx  1 root root       27 Oct 19 08:59 libhdf5_hl.so -> libhdf5_serial_hl.so.10.0.2
-rw-r--r--  1 root root 19953086 Apr  5  2016 libhdf5_serial.a
-rw-r--r--  1 root root  1659560 Apr  5  2016 libhdf5_serial_fortran.a
lrwxrwxrwx  1 root root       32 Apr  5  2016 libhdf5_serial_fortran.so -> libhdf5_serial_fortran.so.10.0.2
lrwxrwxrwx  1 root root       32 Apr  5  2016 libhdf5_serial_fortran.so.10 -> libhdf5_serial_fortran.so.10.0.2
-rw-r--r--  1 root root   238408 Apr  5  2016 libhdf5_serial_fortran.so.10.0.2
-rw-r--r--  1 root root   878832 Apr  5  2016 libhdf5_serial_hl.a
-rw-r--r--  1 root root   515320 Apr  5  2016 libhdf5_serialhl_fortran.a
lrwxrwxrwx  1 root root       34 Apr  5  2016 libhdf5_serialhl_fortran.so -> libhdf5_serialhl_fortran.so.10.0.2
lrwxrwxrwx  1 root root       34 Apr  5  2016 libhdf5_serialhl_fortran.so.10 -> libhdf5_serialhl_fortran.so.10.0.2
-rw-r--r--  1 root root    80520 Apr  5  2016 libhdf5_serialhl_fortran.so.10.0.2
lrwxrwxrwx  1 root root       27 Apr  5  2016 libhdf5_serial_hl.so.10 -> libhdf5_serial_hl.so.10.0.2
-rw-r--r--  1 root root   126232 Apr  5  2016 libhdf5_serial_hl.so.10.0.2
-rw-r--r--  1 root root     3859 Apr  5  2016 libhdf5_serial.settings
lrwxrwxrwx  1 root root       24 Oct 19 08:57 libhdf5.so -> libhdf5_serial.so.10.1.0
  

Я не вижу никаких проблем. Как бы мне переустановить hdf5?

Комментарии:

1. ubuntuforums.org/showthread.php?t=2050804

2. Будет ли это работать с hdf5?

3. вы установили hdf5 из исходного кода или с помощью apt-get?

4. Я установил libhdf5-serial-dev с помощью apt-get в соответствии с инструкциями caffe.

5. попробуйте эти команды find . -type f -exec sed -i -e 's^"hdf5.h"^"hdf5/serial/hdf5.h"^g' -e 's^"hdf5_hl.h"^"hdf5/serial/hdf5_hl.h"^g' '{}' ; cd /usr/lib/x86_64-linux-gnu sudo ln -s libhdf5_serial.so.10.1.0 libhdf5.so sudo ln -s libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so

Ответ №1:

Проблема в том, что компоновщик ищет libhdf5_cpp.so , но у вас есть только libhdf5_cpp.so.11.0.0

Быстрый взлом заключается в символической ссылке libhdf5_cpp.so.11.0.0 на libhdf5_cpp.so

Комментарии:

1. lrwxrwxrwx 1 root root 21 Oct 20 12:35 libhdf5_cpp.so -> libhdf5_cpp.so.11.0.0 Я создал символическую ссылку, как вы предложили, но я все еще получаю ошибку. Есть идеи? AR -o .build_release/lib/libcaffe.a LD -o .build_release/lib/libcaffe.so.1.0.0-rc3 /usr/bin/ld: cannot find -lhdf5 collect2: error: ld returned 1 exit status Makefile:567: recipe for target '.build_release/lib/libcaffe.so.1.0.0-rc3' failed make: *** [.build_release/lib/libcaffe.so.1.0.0-rc3] Error 1

2. fileName.so Это также символическая ссылка на fileName.so.11.0.0 . Таким образом, у вас может быть несколько версий библиотеки в вашей системе, и если приложению нужна конкретная библиотека, оно может ссылаться на нее, в то время как, как правило, самая новая выбирается по символической ссылке.