Подтвердить что ты не робот

Ошибка компиляции - отсутствует 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

Я что-то пропустил?

4b9b3361

Ответ 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. См.: Как исправить неопределенные ссылки для функций надувания/выкачивания?.