it-swarm-ko.tech

"./configure"옵션 "--build", "--Host"및 "--target"의 차이점은 무엇입니까?

스크립트 ./configure는 3 가지 옵션을 허용합니다 --build, --Host--target. 나는 그들의 역할을 혼동하고 있습니다. 그것들의 차이점과 의미는 무엇입니까?

107
Eonil

이 블로그 게시물 에서 언급하고 GCC 구성 조건 에서 언급 한 것처럼 --target는 툴체인을 컴파일 할 때만 적용됩니다. 라이브러리 또는 바이너리의 정상적인 크로스 컴파일을 할 때

--build=the architecture of the build machine
--Host=the architecture that you want the file to run on

그러나 툴체인을 구축하면 상황이 더 복잡해질 수 있습니다. 나는 다음이 맞다고 생각한다 (그러나 나는 크로스 디버거를 수동으로 컴파일했다고 말할 수는 없다) :

당신이 가지고 있다고 말할 수 있습니다 :

  • 모든 컴파일을 수행 할 powerpc 빌드 머신
  • 코드가 실행될 밉 프로세서가있는 여러 임베디드 장치
  • 현장에서 이러한 장치를 디버깅하는 데 사용할 x86 랩탑

내장 된 장치에서 실행되도록 디버깅 서버 (예 : gdbserver)를 구성하고 빌드합니다.

./configure --build=powerpc --Host=mips

임베디드 장치에 PuTTY를 설치하고 "gdbserver : 1234 a.out"을 실행하여 디버깅을 시작하고 포트 1234에서 수신 대기하십시오.

그런 다음 gdbserver에 연결하고 제어하는 ​​디버깅 클라이언트를 빌드합니다.

./configure --build=powerpc --Host=i686 --target=mips 

필드에서 a.out 프로그램을 디버그하기 위해 "gdbclient embedded.device : 1234"를 실행할 수 있도록 x86 랩톱에 복사합니다.

위의 GCC 링크 또는 Canadian cross 컴파일에 대한이 섹션을 보려는 컴파일러에도 모두 적용됩니다.

또한 실제로 this Autoconf manual page 에 따라 "target은 기본적으로 Host, Host to Build 및 구성 결과로 빌드되므로 build, Host 또는 target이 지정되어 있지 않을 수 있습니다. .추측."

Word에서 --build에서 코드를 빌드하고 --Host 아키텍처 환경을 사용하여 --target에서 코드를 실행하십시오.

98
user124850

참고 : 인수 --target는 컴파일러 (예 : GCC)를 빌드 할 때만 의미가 있습니다. GCC를 빌드하기 전에 configure을 (를) 실행할 때 :

  • --build : 구축중인 머신
  • --Host : 구축하려는 머신
  • --target : GCC가 바이너리를 생성하는 머신

GCC 문서 ( 호스트/대상 특정 설치 정보 )에서 :

빌드, 호스트 및 대상이 모두 동일한 경우이를 기본이라고합니다. 빌드와 호스트가 동일하지만 대상이 다른 경우이를 크로스라고합니다. 빌드, 호스트 및 대상이 모두 다른 경우 캐나다라고합니다 (캐나다 정당과 당시의 빌드 작업을 수행 한 사람의 배경을 모호한 이유로 처리). 호스트와 대상이 동일하지만 빌드가 다른 경우 크로스 컴파일러를 사용하여 다른 시스템의 기본을 빌드합니다. 어떤 사람들은 이것을 Host-x-Host, 교차 네이티브 또는 교차 빌드 네이티브라고 부릅니다. 빌드와 대상이 동일하지만 호스트가 다른 경우 크로스 컴파일러를 사용하여 빌드중인 시스템에 대한 코드를 생성하는 크로스 컴파일러를 빌드합니다. 이것은 드물기 때문에이를 설명하는 일반적인 방법은 없습니다. 이것을 크로스 백이라고하는 제안이 있습니다.

68
Delan Azabani