configure에서 --host와 --build의 차이

Posted at 2008/08/20 18:41 // in Programming // by Daniel

configure 스크립트에서 받는 옵션으로 --host, --build, --target이 있습니다.

만약에 빌드를 x86 리눅스 머신에서 하고 실제 실행은 리눅스이면서 eabi를 쓰고 ARM 플랫폼에서 실행하고 싶다면

./configure --target=arm-none-linux-gnueabi --host=arm-none-linux-gnueabi --build=linux

./configure --target=arm-none-linux-gnueabi --host=arm-none-linux-gnueabi --build=i486-pc-linux-gnu

이런식으로 할 겁니다.

--build : 내가 지금 작업하고 있는 컴파일 시스템 - 그러니까 코딩 작업하고 있는 호스트

--host : 빌드하고 나서 실행파일이 실행될 시스템을 명시합니다. 컴파일 결과물이 돌아갈 환경. 실제 타겟 이름. 예를 들어 arm-none-linux-

--target : (대부분 host와 같은 거이 일반적이고) 크로스 컴파일러를 빌드할 때 등에 쓰는 것으로 빌드된 파일이 실행됐을 때 내놓을 바이너리 포맷입니다.

target을 쓰는 경우는 예를 들어 x86 리눅스에서 ARM 컴파일러를 PowerPC에서 실행시킬 바이너리를 만든다면

./configure --target=arm-linux-gnu --host=powerpc-linux-gnu --build=i686-pc-linux-gnu

정도로 쓰면 됩니다.

영문으로 자세히 설명된 canadian cross http://www.airs.com/ian/configure/configure_6.html

http://kelp.or.kr/korweblog/stories.php?story=04/09/22/9919655

-------------

KLDP에서 퍼온 것

http://www.belgeler.org/autobook/autobook-Building-with-a-Cross-Compiler...

즉 Linux에서 빌드를 하는데 만드는 컴파일러가 dos에서 실행되는 컴파일러이고, 이 컴파일러의 출력코드는 mips용이라면
--build : linux
--host : dos
--target : mips
가 됩니다. 이런 경우를 canadian cross라고 하죠. 캐나다에 세 민족이 살아서 그런데나... 물론 이런 canadian cross는 library 때문에 빌드가 상당히 복잡해집니다.

기본적으로는 host, target, build를 모두 적어주어야 합니다. 단, 적어주지 않는 경우 config.guess script에서 나머지를 default로 현재 platform으로 설정합니다.

그래서
canadian cross 인 경우에는 --host, --target을 정확히 적어주어야 하고,
cross인 경우에는 --target 만을 정확히 적어주면 되고,
일반적인 경우에는 아무것도 적어주지 않아도 됩니다.

크리에이티브 커먼즈 라이센스
Creative Commons License

이 글에는 트랙백을 보낼 수 없습니다