dropbearを実行すると、./configure
zlibが見つからないというメッセージが表示されます。しかし、zlibの正しいディレクトリを指すようにプレフィックス(たとえば)を追加しましたが、--prefix
問題は解決しません。
以下を実行して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行にありました)。