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
    ]
)

즉, 옵션 값은 includelib하위 디렉터리를 모두 포함하는 디렉터리(또는 해당 하위 디렉터리에 있을 것으로 예상되는 파일을 포함하는 디렉터리)의 경로 이름이 될 것으로 예상합니다. 주석은 주어진 값이 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행에 있었습니다).

관련 정보