dropbear를 구성할 때 zlib가 누락되었습니다.

dropbear를 구성할 때 zlib가 누락되었습니다.

dropbear를 실행하면 ./configurezlib이 누락되었다는 메시지가 표시됩니다. 그러나 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.

무슨 일이 일어나고 있는지는 configurezlib를 찾을 수 없다는 것이 아니라 configure사용 중인 것보다 최신 버전의 GCC가 필요하고 인식할 수 없는 명령줄 옵션에서 GCC 오류가 발생한다는 것입니다. 모두테스트는 실패했지만 zlib 테스트가 가장 먼저 실패해 치명적이었습니다.

이 문제를 해결하려면 configure스크립트를 편집하여 CFLAGS 매개변수를 제거하세요 -Wno-pointer-sign(저에게는 3135행에 있었습니다).

관련 정보