본문 바로가기
취미/linux 기초

cmake로 CrossCompile 하기

by 심심해43 2022. 10. 20.
반응형

1) cmake 로 CrossCompile 하기 위해서는 arm.toolchain  파일을 생성 합니다. 

 

    cmake 실행 폴더의 위치에 파일을 생성하고 아래와 같이 

    CrossCompiler의 경로 및 SYSTEM이  arm 임을 지정하는 파일을 생성합니다. 

    해당 설정의 자신의 상황에 맞게 변경해야 합니다. 

SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR arm)

# specify the cross compiler
SET(COMPILER_ROOT < 자신의 경로/bin/arm-buildroot-linux-gnueabihf-  >)

SET(CMAKE_C_COMPILER ${COMPILER_ROOT}gcc)
SET(CMAKE_CXX_COMPILER ${COMPILER_ROOT}g++)
SET(CMAKE_LINKER ${COMPILER_ROOT}ld)
SET(CMAKE_NM ${COMPILER_ROOT}nm)
SET(CMAKE_OBJCOPY ${COMPILER_ROOT}objcopy)
SET(CMAKE_OBJDUMP ${COMPILER_ROOT}objdump)
SET(CMAKE_RANLIB ${COMPILER_ROOT}ranlib)

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

 

2) cmake 실행 

    cmake가 toolchain을  정상적으로 인식하도록 만든 파일을  옵션으로 아래와 같이 실행합니다. 

cmake -DCMAKE_TOOLCHAIN_FILE=arm.toolchain .

 

3)  make 를 실행 

      make

 

4) 생성된 파일이 정상적으로 되었는지 확인을 하는 방법은  file 명령어를 이용합니다. 

    $ file  hello  실행

    아래는 HOST PC 환경으로 빌드한 파일 입니다. ( 64bit  , x86-64 ... ) 

linux File 명령어 실행

   아래는 이번에 적용한 arm 환경으로 CrossCompile 한 파일 입니다.  (32bit , ARM ...)

linux File 명령어 실행 (32bit arm info)

   위와같이 생성된 파일의 정보를 확인해 빌드가 정상적으로 되었는지 확인이 가능합니다. 

 

   아래와 같이 ARM 용으로 빌드가 되면 HOST PC에서는 정상적으로 실행되지 않습니다. 

크로스빌드된 파일 실행시 에러발생.

 

이상입니다.

댓글