#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
. Таким образом, у вас может быть несколько версий библиотеки в вашей системе, и если приложению нужна конкретная библиотека, оно может ссылаться на нее, в то время как, как правило, самая новая выбирается по символической ссылке.