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