配置 dropbear 时缺少 zlib

配置 dropbear 时缺少 zlib

当我运行./configuredropbear 时,它说缺少 zlib;但是,我已经添加了前缀,即--prefix,以指向 zlib 的正确目录,但问题仍然存在。

我正在尝试通过运行来构建 dropbear 中的文件

#!/bin/bash
./configure --prefix=$HOME/Hi3536_SDK_V2.0.4.0/dropbear \
            --with-zlib=$HOME/Hi3536_SDK_V2.0.4.0/zlib/include \
            --host=arm CC=arm-hisiv400-linux-gcc

但似乎无法本地化 zlib 的路径。

答案1

配置选项--prefix用于告诉配置脚本(以及生成的 makefile)在哪里将要安装的程序。它没有告诉你去哪里得到头文件和库。

要告诉配置脚本从哪里获取文件,您可能必须调整这些变量:

  • CPPFLAGS(对于包含头文件的目录)
  • LDFLAGS(对于包含库的目录)
  • LIBS(实际的库名称)

您可以在命令行上传递这些值进行配置,例如

myheader=$HOME/junk/include
mylibs=$HOME/junk/lib
./configure CPPFLAGS="-I$myheader" LDFLAGS="-L$mylibs"

跟进澄清(应将其纳入问题中)

当我尝试通过运行在 dropbear 中构建文件时

#!/bin/bash ./configure --prefix=$HOME/Hi3536_SDK_V2.0.4.0/dropbear --with-zlib=$HOME/Hi3536_SDK_V2.0.4.0/zlib/include --host=arm CC=arm-hisiv400-linux-gcc

但似乎无法本地化 zlib 的路径

你可以通过查看源码来发现问题配置脚本

# Check if zlib is needed
AC_ARG_WITH(zlib,
    [  --with-zlib=PATH        Use zlib in PATH],
    [
        # option is given
        if test -d "$withval/lib"; then
            LDFLAGS="-L${withval}/lib ${LDFLAGS}"
        else
            LDFLAGS="-L${withval} ${LDFLAGS}"
        fi
        if test -d "$withval/include"; then
            CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
        else
            CPPFLAGS="-I${withval} ${CPPFLAGS}"
        fi
    ]
)

也就是说,它期望选项值是包含includelib子目录的目录的路径名(或包含预期位于这些子目录中的文件的目录)。注释显示给定值是include(子)目录的路径名。下列编译/链接检查将失败:

AC_CHECK_LIB(z, deflate, , AC_MSG_ERROR([*** zlib missing - install first or check config.log ***]))

可能的解决方法:将该选项更改为

--with-zlib=$HOME/Hi3536_SDK_V2.0.4.0/zlib

答案2

检查config.log文件。您很可能会发现有关 的重复错误消息-Wno-pointer-sign

发生的情况并不是configure找不到 zlib,而是需要configure比您正在使用的 GCC 版本更新的版本,并且 GCC 在无法识别的命令行选项上出错。 全部测试失败了,只是 zlib 的测试是第一个失败是致命的。

要解决此问题,请编辑configure脚本以从 CFLAGS 参数中删除-Wno-pointer-sign(对我来说,它位于第 3135 行)。

相关内容