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 ***
받은 경고도 이를 통해 해결할 수 있습니다. 그러나 이미 설치한 경우 다시 설치하거나 업데이트해 볼 수 있습니다.
보너스:시스템에서 필요한 개발 공유 라이브러리를 찾는 한 가지 방법은 어떤 패키지가 특정 파일을 제공하는지 패키지 관리자에게 문의하는 것입니다. 예를 들어
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 ...