我正在尝试使用IBM XL编译器在Blue Gene Q上编译软件,我收到以下错误消息:
"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
我错过了什么吗?
您缺少将包含路径设置为放置zlib头文件的位置。设置LD_LIBRARY_PATH
环境变量用于动态链接共享对象(DLL,即以.so
结尾的文件)。
大多数编译器都有一个选项-I
来添加包含搜索路径。您可能希望使用-L
告诉编译器在哪里找到要链接的库,并使用-l
告诉编译器链接zlib。
EG
$ c++ -I$HOME/zlib/include some_file.cpp -L$HOME/zlib/lib -lz
您缺少zlib.h
头文件,在Linux上通过以下方式安装:
sudo apt-get install libz-dev
事实上,该模块在apt repo中显示为zlib1g-dev
,因此这是最新的电话(2019年2月):
sudo apt install zlib1g-dev
在Fedora:sudo dnf install zlib-devel
(旧版本:sudo dnf install libz-devel
)。
这将为实现gzip和PKZIP中的deflate压缩方法的库提供开发支持文件。
如果您已经有zlib
库,请确保使用-lz
编译代码源。见:How to fix undefined references to inflate/deflate functions?。