Ошибка компиляции - отсутствует zlib.h
Я пытаюсь скомпилировать программное обеспечение Blue Gene Q с помощью компиляторов IBM XL, и я получил это сообщение об ошибке:
"iostreams/zlib.cpp", line 19.10: 1540-0836 (S) The #include file "zlib.h" is not found.
make[3]: *** [zlib.o] Error 1
Я установил новую версию zlib и обновил LD_LIBRARY_PATH
с помощью $HOME/zlib/include
Я что-то пропустил?
Ответы
Ответ 1
Вы установили библиотеку в нестандартном месте ($HOME/zlib/
). Это означает, что компилятор не будет знать, где находятся ваши заголовочные файлы, и вам нужно сообщить об этом компилятору.
Вы можете добавить путь к списку, который компилятор использует для поиска файлов заголовков, используя опцию -I
(верхний регистр i).
Также обратите внимание, что LD_LIBRARY_PATH
предназначен для компоновщика и загрузчика во время выполнения и ищет динамические библиотеки при попытке запустить приложение. Чтобы добавить путь для компоновщика во время сборки, используйте параметр -L
.
Все вместе командная строка должна выглядеть как
$ c++ -I$HOME/zlib/include some_file.cpp -L$HOME/zlib/lib -lz
Ответ 2
Вам не хватает заголовочного файла zlib.h
, в Linux установите его через:
sudo apt-get install libz-dev
На самом деле, модуль представлен как zlib1g-dev
в репозитории apt, так что это актуальный вызов (февраль 2019 года):
sudo apt install zlib1g-dev
На Fedora: sudo dnf install zlib-devel
(в более старых версиях: sudo dnf install libz-devel
).
Это предоставит файлы поддержки разработки для библиотеки, реализующей метод сжатия deflate, найденный в gzip и PKZIP.
Если у вас уже есть библиотека zlib
, убедитесь, что вы компилируете исходные коды с помощью -lz
. См.: Как исправить неопределенные ссылки для функций надувания/выкачивания?.