cross compile 중에 host 실행파일을 생성하는 방법.

kkb의 이미지

Top directory
│
├ first_directory ─ configure.in, Makefile.in, src1.c header1.h
│
├ build_directory ─ Makefile, build_script.sh, configure, src2.c header2.h
│
├ build_help_directory ─ configure, Makefile.in, src3.c header3.h
│
└ other_directory ─ configure.in, Makefile.in, src4.c header4.h

first_directory, build_directory, other_directory는 cross compile로 빌드하고

build_help_directory는 host 실행파일로 빌드하여 build_directory로 갖고 와서 build_directory를 cross compile 할 때 필요합니다.

최상위에서 ./configure (매개변수 생략) 실행하도록 하면
각각의 하위 디렉토리(build_help_directory 제외)에 있는 configure 파일과 Makefile 의
CC=, AR= 등등에 최상위에서 설정한 cross compiler 정보가 설정되고

위와 같이 하기 위해
build_directory의 Makefile에서 build_script.sh 셸스크립트 파일을 실행시켜서
build_help_directory를 host 실행파일로 빌드하게 하였습니다.

위와 같이 build_help_directory으로 이동하여 host에서 실행할 수 있는 실행파일을 만들고 싶은데
Makefile에서 실행시킨 스크립트 파일에서 build_help_directory를 ./configure와 make를 실행하면
host compiler 정보가 아닌 cross compiler 정보가 설정되어 빌드됩니다.

cross compiler 정보가 아닌 host compiler 정보로 설정되도록 할 수 있을까요?

생각해보면 환경변수에 cross compiler 정보를 넣고 make 할 거 같은데
other_directory도 있어서 환경변수를 아예 바꿔버리면 안되고
바꾸고 다시 복구하고 하려면 쉽지 않을 것 같긴 하네요.

cross compile 할 때 host 실행파일이 필요한 경우가 많이 있을 거 같은데
어떤 식으로 하는지 모르겠네요.

세벌의 이미지