当我运行./configure
dropbear 时,它说缺少 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
]
)
也就是说,它期望选项值是包含include
和lib
子目录的目录的路径名(或包含预期位于这些子目录中的文件的目录)。注释显示给定值是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 行)。