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행에 있었습니다).