2013-08-09 8 views
20

Я пытаюсь скомпилировать программу на Blue Gene Q с использованием компиляторов IBM XL, и я получил сообщение об ошибке:Ошибка компиляции - отсутствует zlib.h

"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

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

ответ

7

Вам не удавалось установить путь, куда вы помещаете файлы заголовков zlib. Установка переменной окружения LD_LIBRARY_PATH предназначена для динамической компоновки общих объектов (DLL, то есть файлов, заканчивающихся .so).

Большинство компиляторов имеют опцию -I, чтобы добавить включенные пути для поиска. И вы, вероятно, захотите использовать -L, чтобы сообщить компилятору, где найти библиотеку для связи, и использовать -l, чтобы сообщить компилятору ссылку с zlib.

Э.Г.

$ c++ -I$HOME/zlib/include some_file.cpp -L$HOME/zlib/lib -lz 
+2

Неверно. Ответ на ядро ​​правильный. – SmallChess

+1

@SmallChess Учитывая, что OP говорит: «У меня *** установлена ​​*** новая версия zlib ...» (выделено мной) и отмечен мой ответ как принятый, возможно, вы можете уточнить, почему? Просто потому, что ответ имеет больше голосов, это не значит, что он автоматически исправляется. –

+1

Я чувствую, что большинство людей, которые проголосовали за ответ «Якоб», не полностью прочитали вопрос. – searchengine27

64

Вы отсутствуют zlib.h заголовочный файл, на Linux установить его с помощью:

sudo apt-get install libz-dev 

На Fedora: sudo dnf install libz-devel

Это обеспечит файлы поддержки разработки для библиотеки, реализующей метод сжатия Deflate найдено в gzip и PKZIP.

Если у вас уже есть библиотека zlib, убедитесь, что вы скомпилируете источники кода с помощью -lz. См.: How to fix undefined references to inflate/deflate functions?.

+2

У меня была такая же проблема с fedora 25. Решение sudo dnf install libz-devel' –