6월, 2015의 게시물 표시

configure 의 --build, --host, --target 뜻

configure 의 --build, --host, --target 은 크로스 컴파일을 할 때 쓰인다. 크로스 컴파일이란 컴파일하고 있는 OS/기계와 컴파일 후 만들어진 바이너리가 실행하는 OS/기계가 다른 경우를 말한다. build, host, target 의 관계에 따라 몇 가지 용어가 있지만, 여기서는 그냥 넘어가자. 크로스 컴파일 자체에 대한 설명이 목적은 아니니까... 그래도 알고 싶은 사람은 여기를 보자. https://gcc.gnu.org/onlinedocs/gccint/Configure-Terms.html 그럼 이제, --build, --host, --target 의 뜻을 살펴보자. --build : 컴파일하고 있는 OS/기계 --host : 컴파일해서 만들어진 바이너리가 실행되는 OS/기계 --target: 컴파일해서 만들어진 바이너리가 만들어내는 바이너리가 실행되는 OS/기계 --build 와 --host 는 금방 알 수 있을 것이라 생각한다. 하지만 --target 의 경우에는 다소 헛갈린다. 실제로도 --target 의 경우는 거의 쓰이지 않는다. 대체로 gcc 같은 툴체인을 컴파일할 때 주로 쓰인다. 몇 가지를 예를 들어보자. 윈도에서 많이 사용되는 GNU 툴체인인 mingw 의 경우, 리눅스용 크로스 컴파일러를 제공한다. 이를 이용하면 리눅스에서 윈도용 바이너리를 만들어낼 수 있다. 이 때 사용하는 configure 옵션의 예는 다음과 같다. configure --host=i686-w64-mingw32  i686-w64-mingw32 는 host triplet(CPU-VENDOR-OS) 으로 32 비트용 윈도용 프로그램(i686)을 mingw-w64(w64) 툴체인으로 만든다는 뜻이다. 만약, 윈도에서 실행되지만, ARM 용 바이너리를 만들어내는 바이너리를 인텔용 32비트 리눅스에서 만들고자 한다면, configure 옵션은 이런 모습이 될 것이다. configure --build=i686-