编译错误 - 缺少zlib.h

did*_*mos 60 compiler-errors compilation zlib

我正在尝试使用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
Run Code Online (Sandbox Code Playgroud)

我已经安装的zlib的新版本和更新的LD_LIBRARY_PATH$HOME/zlib/include

我错过了什么吗?

ken*_*orb 161

您缺少zlib.h头文件,在Linux上通过以下方式安装:

sudo apt-get install libz-dev
Run Code Online (Sandbox Code Playgroud)

事实上,该模块zlib1g-dev在apt repo中呈现,因此这是最新的电话(2019年2月):

sudo apt install zlib1g-dev
Run Code Online (Sandbox Code Playgroud)

在Fedora上:( sudo dnf install zlib-devel在旧版本中:) sudo dnf install libz-devel.

这将为实现gzip和PKZIP中的deflate压缩方法的库提供开发支持文件.

如果您已经拥有zlib库,请确保使用的是编译代码源-lz.请参阅:如何修复inflate/deflate函数的未定义引用?.

  • 我和fedora 25有同样的问题.解决方案是`sudo dnf install libz-devel` (3认同)
  • 有了fedora 28,我不得不`sudo dnf install zlib-devel` (3认同)

Som*_*ude 16

您缺少将包含路径设置为放置zlib头文件的位置.设置$HOME/zlib/环境变量用于动态链接共享对象(DLL,即以文件结尾的文件-I).

大多数编译器都可以选择LD_LIBRARY_PATH添加包含搜索路径.你可能想用-L它告诉编译器在哪里找到要链接的库,并用它$HOME/zlib/来告诉编译器与zlib链接.

例如

$ c++ -I$HOME/zlib/include some_file.cpp -L$HOME/zlib/lib -lz
Run Code Online (Sandbox Code Playgroud)

  • @SmallChess考虑到OP说"我已经***安装了***新版本的zlib ......"(强调我的)并将我的答案标记为已接受,或许你可以详细说明原因?仅仅因为答案有更多的选票并不意味着它会自动纠正. (8认同)
  • 我觉得大多数人投票赞成克尔诺布的答案,并没有完全阅读这个问题. (3认同)