【问题标题】:Compilation error - missing zlib.h编译错误 - 缺少 zlib.h
【发布时间】:2013-08-11 11:13:10
【问题描述】:

我正在尝试使用 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

我错过了什么吗?

【问题讨论】:

    标签: compiler-errors compilation zlib


    【解决方案1】:

    您缺少 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?

    【讨论】:

    • 我在 fedora 25 上遇到了同样的问题。解决方案是 sudo dnf install libz-devel
    • 使用 Fedora 28,我不得不 sudo dnf install zlib-devel 代替
    • 在 Debian 上尝试从 ruby​​ gem 安装备份时遇到同样的问题。在控制台中有fatal error: zlib.h: No such file or directoryin mkmf.logzlib is missing; necessary for building libxml2
    【解决方案2】:

    您已将库安装在非标准位置 ($HOME/zlib/)。这意味着编译器不会知道你的头文件在哪里,你需要告诉编译器。

    您可以使用-I(大写i)选项将路径添加到编译器用来搜索头文件的列表中。

    另请注意,LD_LIBRARY_PATH 用于 run-time 链接器和加载器,并在尝试运行应用程序时搜索动态库。要为构建时链接器添加路径,请使用 -L 选项。

    命令行应该是这样的

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

    【讨论】:

    • @SmallChess 考虑到 OP 说“我有 installed 一个新版本的 zlib...”(强调我的)并标记了我的答案作为接受,也许你可以详细说明为什么?仅仅因为一个答案有更多的选票并不意味着它是自动正确的。
    • 我觉得大多数投票赞成 kernob 答案的人并没有完全阅读这个问题。
    • 问题说zlib已经安装。但是没有提到 dev zlib 包。单独安装 zlib 二进制文件(在大多数发行版中)不会安装 zlib.h。但是,这两个答案都完全回答了这个问题。大多数人可能没有使用 zlib 开发软件。而是通过编译安装软件。因此,下面的票数较高。和上面的高级答案。
    【解决方案3】:

    我也遇到了同样的问题。然后我安装了zlib,问题还是一样。然后我在我的 .bashrc 中添加了以下几行,它起作用了。您应该将路径替换为您的 zlib 安装路径。 (我没有root权限)。

    export PATH =$PATH:$HOME/Softwares/library/Zlib/zlib-1.2.11/
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/Softwares/library/Zlib/zlib-1.2.11/lib/
    export LIBRARY_PATH=$LIBRARY_PATH:$HOME/Softwares/library/Zlib/zlib-1.2.11/lib/
    export C_INCLUDE_PATH=$HOME/Softwares/library/Zlib/zlib-1.2.11/include/
    export CPLUS_INCLUDE_PATH=$HOME/Softwares/library/Zlib/zlib-1.2.11/include/
    export PKG_CONFIG_PATH=$HOME/Softwares/library/Zlib/zlib-1.2.11/lib/pkgconfig
    

    【讨论】:

      【解决方案4】:

      在 openSUSE 19.2 中安装 patterns-hpc-development_node 包为我解决了这个问题。

      【讨论】:

        【解决方案5】:

        或许你可以从https://dev.w3.org/Amaya/libpng/zlib/zlib.h下载zlib.h,放到目录下即可解决问题。

        【讨论】:

          猜你喜欢
          • 2013-01-10
          • 1970-01-01
          • 2014-10-12
          • 1970-01-01
          • 1970-01-01
          • 2011-08-10
          • 2014-08-20
          • 2020-02-28
          相关资源
          最近更新 更多