program tip

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

radiobox 2020. 8. 4. 07:37
반응형

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


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


에서 언급 한 바와 같이 이 블로그 게시물 과에 언급 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

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

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

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

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

이것은 모두 위의 GCC 링크 또는 캐나다 크로스 컴파일에 대한이 섹션을 볼 수있는 컴파일러에도 적용됩니다 .

또한 이 Autoconf 매뉴얼 페이지에 따르면 "대상은 기본적으로 호스트, 호스트는 빌드 및 config.guess의 결과로 빌드 됨"으로 인해 실제로 빌드, 호스트 또는 대상이 지정되어 있지 않을 수도 있습니다 .

한마디로의 코드를 구축 --build, 그것을 실행 --host--target아키텍처 환경을 제공합니다.


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

  • --build: 구축중인 기계
  • --host: 당신이 만드는 기계
  • --target: GCC가 바이너리를 생성하는 머신

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

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

참고 URL : https://stackoverflow.com/questions/5139403/whats-the-difference-of-configure-option-build-host-and-target

반응형