ARM用のopenSSHをクロスコンパイルしようとしても成功しなかったようです。
私の設定パラメータは次のとおりです。
./configure --host=arm CC=arm-hisiv400-linux-g++ --prefix=/home/aa/Hi3536_SDK_V2.0.4.0/openSSH --with-zlib=/usr/include
checking zlib.h presence... yes
configure: WARNING: zlib.h: present but cannot be compiled
configure: WARNING: zlib.h: check for missing prerequisite headers?
configure: WARNING: zlib.h: see the Autoconf documentation
configure: WARNING: zlib.h: section "Present But Cannot Be Compiled"
configure: WARNING: zlib.h: proceeding with the compiler's result
configure: WARNING: ## ------------------------------------------- ##
configure: WARNING: ## Report this to [email protected] ##
configure: WARNING: ## ------------------------------------------- ##
checking for zlib.h... no
configure: error: *** zlib.h missing - please install first or check config.log ***
zlib.hが存在するのにコンパイルできない理由を誰が教えてもらえますか?
答え1
zlib開発ファイルをインストールしてこの問題を解決しました。
# Debian-based
sudo apt install libz-dev
# Fedora-based
sudo dnf install zlib-devel
これは、最後に発生したエラーに関連しています。
configure: error: *** zlib.h missing - please install first or check config.log ***
受信した警告もこれで解決できます。ただし、すでにインストールしている場合は、再インストールまたは更新してみることができます。
ボーナス:システムで必要な開発共有ライブラリを見つける1つの方法は、どのパッケージが特定のファイルを提供しているかをパッケージマネージャに問い合わせることです。たとえば、
dnf provides
Fedoraは次のような状況で役立つ可能性があります。$ sudo dnf provides /usr/include/zlib.h ... zlib-devel-1.2.11-30.fc35.x86_64 : Header files and libraries for Zlib development Repo : @System Matched from: Filename : /usr/include/zlib.h ...
解決策が見つかりましたありがとうこの回答。
答え2
ホストアーチ(/usr/include/zlib.h)に対してzlib.hが見つかった可能性がありますが、configure
ターゲットアーチには使用できません。詳細については、config.logを参照してください。
zlibをビルドするには、同じクロスコンパイラ()を使用する必要がありますconfigure --host=arm CC=arm-hisiv400-linux-g++
。あるいは、ディストリビューションがクロスコンパイラと一致するzlib develパッケージを提供することもできます。
別のプレフィックスパスにzlibをインストールした場合は、設定に通知する必要があります。
./configure CFLAGS=-I/path/to/include LDFLAGS=-L/path/to/lib ...
または
./configure PKG_CONFIG_PATH=/path/to/lib/pkgconfig ...