소스에서 컴파일: 구성 스크립트 "build"에는 어떤 옵션이 있습니까?

소스에서 컴파일: 구성 스크립트 "build"에는 어떤 옵션이 있습니까?

다음과 같은 라인을 실행하면:

./configure --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu {*shortened*} \
--with-imap-ssl=/usr/include/openssl/ --enable-ftp --enable-mbstring --enable-zip

"x86_64-redhat-linux-gnu"의 설명적 의미를 이해하지만 질문이 있습니까?

1) 모든 선택 사항의 목록이 있습니까? 모든 구성 스크립트 또는 인터넷에서.

2) 답변을 좀 더 구체적으로, 혹은 더 일반적으로 만드는 것이 결과에 큰 영향을 미치나요?

감사해요.

답변1

스크립트 --build-host옵션은 configure표준 구성 옵션이며 교차 빌드(예: 한 시스템에서 패키지를 빌드하여 다른 시스템에서 실행)를 수행하지 않는 한 이를 지정할 필요가 거의 없습니다. 이러한 옵션의 값은 형식 때문에 "트리플"이라고 합니다 cpu-vendor-os. (때때로 귀하의 경우처럼 os실제로는 이지만 kernel-os여전히 트리플이라고 합니다.)

기본 구성 스크립트는 호스트 트리플을 추론할 수 있는 능력이 뛰어나므로 결과가 틀렸다는 아주 좋은 증거가 없는 한 그렇게 하도록 놔두어야 합니다. 이를 수행하는 스크립트는 빌드 패키지 어딘가(아마도 하위 디렉터리) config.guess에서 찾을 수 있습니다 . build-aux크로스 빌드를 수행 중이고 트리플을 이해해야 하는 경우 host가장 먼저 시도해야 할 것은 config-guess호스트 시스템에서 실행하는 것입니다.

--host및 에 대해 제공된(또는 추측된) 값은 값을 정규화하는 --build이라는 또 다른 스크립트를 통해 전달됩니다 . config.sub(autoconf 문서에 따르면, config.sub호스트 삼중항이 없으면 빌드가 이를 신경 쓰지 않는다고 가정할 수 있습니다.) 특정 패키지의 개발자는 config.sub빌드의 특정 요구 사항에 맞게 스크립트를 사용자 정의할 수 있으며 다양한 방법이 있습니다. 버전의 표준 스크립트 config.sub이므로 하나의 패키지가 config.sub다른 패키지 위에서 실행되거나 동일한 패키지의 다른 버전에서 실행될 것으로 예상해서는 안 됩니다.

위의 모든 사항에도 불구하고 자동 구성 패키지는 올바른 기본 파일 위치를 제공하기 위해 기본 파일 시스템 레이아웃을 식별하는 것 외에 실제로 호스트 운영 체제 및 공급업체의 이름을 알 필요가 없습니다.

읽어보면 config.sub인식될 옵션의 범위에 대한 아이디어를 얻을 수 있지만 값을 어떻게 사용하는지, 또는 값이 사용되는지 파악하는 것은 그리 쉽지 않습니다. 첫 번째 필드(cpu)가 가장 많이 사용됩니다.

다음을 입력하여 모든 옵션 목록을 얻을 수 있습니다.

./configure --help

아니면 더 나은,

./configure --help | less

항상 옵션이 있기 때문입니다.

--build표준 옵션( 및 위에서 언급한 --host대로 --target파일 위치를 재정의하는 옵션) 외에도 각 구성 스크립트에서 허용하는 특정 옵션이 다릅니다. 패키지 버전에 따라 변경되는 경향이 있으므로 외부 문서에 의존하기보다는 항상 구성 스크립트 자체를 확인해야 합니다.

불행하게도 구성 스크립트의 도움말 콘텐츠는 유지 관리를 패키지 개발자에게 의존하기 때문에 항상 100% 완전한 것은 아닙니다. 때로는 예외 또는 개발자 전용 옵션이 출력의 일부가 아니지만 ./configure --help이는 일반적으로 일반 설치에서 해당 옵션을 사용해서는 안 됨을 나타냅니다.

관련 정보