问题
I am trying to compile software on Blue Gene Q using IBM XL compilers and I got this error message:
"iostreams/zlib.cpp", line 19.10: 1540-0836 (S) The #include file "zlib.h" is not found.
make[3]: *** [zlib.o] Error 1
I have installed a new version of zlib and updated LD_LIBRARY_PATH with $HOME/zlib/include
Am I missing something?
回答1:
You have installed the library in a non-standard location ($HOME/zlib/). That means the compiler will not know where your header files are and you need to tell the compiler that.
You can add a path to the list that the compiler uses to search for header files by using the -I (upper-case i) option.
Also note that the LD_LIBRARY_PATH is for the run-time linker and loader, and is searched for dynamic libraries when attempting to run an application. To add a path for the build-time linker use the -L option.
All-together the command line should look like
$ c++ -I$HOME/zlib/include some_file.cpp -L$HOME/zlib/lib -lz
回答2:
You are missing zlib.h header file, on Linux install it via:
sudo apt-get install libz-dev
As a matter of fact, the module presents as zlib1g-dev in the apt repo, so this is the up-to-date call (Feb 2019):
sudo apt install zlib1g-dev
On Fedora: sudo dnf install zlib-devel (in older versions: sudo dnf install libz-devel).
This will provide the development support files for a library implementing the deflate compression method found in gzip and PKZIP.
If you've already zlib library, make sure you're compiling your code sources with -lz. See: How to fix undefined references to inflate/deflate functions?.
来源:https://stackoverflow.com/questions/18148075/compilation-error-missing-zlib-h