配置 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 行)。

相關內容