Caffe не видел hdf5.h при компиляции

#c #caffe #ubuntu-18.04

#python #глубокое обучение #caffe

Вопрос:

У меня возникли проблемы при установке Caffe Deep Learning Framework на Python:

Когда я запускаю make команду в каталоге caffe, она говорит

hdf5.h: такого каталога нет

Шаги, которые я выполнил:

  • Обновите мой сервер Ubuntu

  • Установите Python 2.7

  • Наличие всех зависимостей, основанных на http://caffe.berkeleyvision.org/install_apt.html

  • Запустите cp cp Makefile.config.пример Makefile.config

  • Раскомментируйте cpu_only = 1 в Makefile.config

Я буду благодарен, если кто-нибудь сможет мне помочь.

Сообщение об ошибке:

 CXX src/caffe/util/hdf5.cpp
in file include from src/caffe/util/hdf5.cpp:1:0:
./include/caffe/util/hdf5.hpp:6:18: fatal error: hdf5.h: No such file or directory
compilation terminated 

Makefile:572 recipe for target '.build_release/src/caffe/util/hdf5.o'       
failed Make:*** [.build_release/src/caffe/util/hdf5.o] Error 1
  

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

1. добро пожаловать в SO. пожалуйста, не публикуйте скриншоты, а скорее скопируйте-вставьте (и отформатируйте) сообщение об ошибке к вашему вопросу: таким образом, поисковые системы смогут лучше найти эту тему в будущем.

2. вы установили hdf5? посмотрите на caffe.berkeleyvision.org/install_apt.html : sudo apt-get install libhdf5-serial-dev

3. о, извините за это, я новичок, я изменю скриншоты. спасибо, что уведомили меня. да, я уже установил hdf5.

4. Есть ли у вас hdf5.h где-нибудь в вашей системе? Попробуйте команду типа locate hdf5.h , чтобы узнать, где она находится, и опубликуйте это здесь.

5. привет, я пытаюсь написать locate hdf5.h , как вы предлагаете, в моем терминале Ubuntu, но ничего не происходит. итак, я запускаю другой комментарий, find ~/ -type f -name "hdf5.h" и результат /home/kelvin/opencv-3.1.0/modules/flann/include/opencv2/flann/hdf5.h . Спасибо

Ответ №1:

Какая версия вашей установки Ubuntu? Попробуйте это. В вашей Makefile.config попытке добавить /usr/include/hdf5/serial/ к INCLUDE_DIRS :

 --- INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
    INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
  

и переименуйте hdf5_hl и hdf5 в hdf5_serial_hl и hdf5_serial в Makefile :

 --- LIBRARIES  = glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
    LIBRARIES  = glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
  

Подробнее об исправлении ошибки здесь.

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

1. извините за мой поздний ответ, спасибо за вашу помощь, я уже исправил проблему, переместив мой hdf5 в каталог.

2. Спасибо. Это экономит мне время!

3. Это решение, которое сработало для меня! Большое спасибо!

4. Этот ответ действительно является лучшим решением (т. Е. Вместо перемещения каталога hdf5.) @kelvin : Не могли бы вы отметить этот ответ как правильный?

5. Это работало в Ubuntu 18.04 без добавления части БИБЛИОТЕК.

Ответ №2:

Это решение сработало для меня на Ubuntu16.04LTS

 sudo apt-get install libhdf5-10
sudo apt-get install libhdf5-serial-dev
sudo apt-get install libhdf5-dev
sudo apt-get install libhdf5-cpp-11
find /usr -iname "*hdf5.h*"
/usr/include/hdf5/serial/hdf5.h
export CPATH="/usr/include/hdf5/serial/"
  

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

1. У меня тоже сработало!

2. У меня сработало три!

3. просто sudo apt-get install libhdf5-10 libhdf5-serial-dev сработало для меня

Ответ №3:

Еще один случай, с которым я столкнулся с:

Я использовал Ubuntu 14.04 и устанавливал hdf5-1.10.0.

Я обнаружил, что hdf5.h он находится в /usr/local/hdf5/include . Таким образом, я изменил Makefile.config файл, добавив это местоположение в INCLUDE_DIRS .

 # Whatever else you find you need goes here.
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include 
                    /usr/local/hdf5/include
  

Я ничего не переименовывал в Makefile . Это сработало нормально.

Ответ №4:

У меня это не сработало на Ubuntu16.04 LTS.

Так что мне пришлось

 sudo apt-get install libhdf5-10
sudo apt-get install libhdf5-serial-dev
sudo apt-get install libhdf5-dev
sudo apt-get install libhdf5-cpp-11
find /usr -iname "*hdf5.h*"
/usr/include/hdf5/serial/hdf5.h
  

Теперь сделайте это

 export CPATH="/usr/include/hdf5/serial/"
  

Ответ №5:

На RHEL7 я устал искать определенные hdf5 обороты и запустил:

 sudo yum install *hdf5*
  

и это то, что у меня есть:

 hdf5-openmpi3-static-1.8.12-11.el7.x86_64
hdf5-1.8.12-11.el7.x86_64
hdf5-openmpi-static-1.8.12-11.el7.x86_64
hdf5-openmpi3-devel-1.8.12-11.el7.x86_64
hdf5-openmpi3-1.8.12-11.el7.x86_64
hdf5-mpich-devel-1.8.12-11.el7.x86_64
hdf5-devel-1.8.12-11.el7.x86_64
hdf5-openmpi-devel-1.8.12-11.el7.x86_64
hdf5-mpich-static-1.8.12-11.el7.x86_64
hdf5-mpich-1.8.12-11.el7.x86_64
hdf5-openmpi-1.8.12-11.el7.x86_64
  

Благодаря @loretoparisi я смог выяснить, где у меня отсутствовал файл заголовка, и проблема исчезла.

 $ find /usr -iname "*hdf5.h*"
/usr/include/openmpi-x86_64/hdf5.h
/usr/include/hdf5.h
/usr/include/mpich-x86_64/hdf5.h
/usr/include/openmpi3-x86_64/hdf5.h