SW 개발

[커널빌드] ARM 리눅스 커널 크로스 빌드하기

. . . 2016. 3. 4. 10:29
반응형
이런저런 방법이있지만, 그냥 간단하게 한다.
구글링한 자료 정리..

소스코드 다운로드

2.4 / 2.6의 경우 linux kernel 에서 arm 용 패치가 있다.
  • 패치 다운로드 링크 : ftp://ftp.arm.linux.org.uk/pub/armlinux/kernel/
3.0 버젼대의 경우 구글링을 해도 arm 용 linux kernel 은 따로 없는것 같기도 하다;;
그래서 공식 커널 다운로드 페이지에서 필요한 커널을 다운받는다.
  • 다운로드 링크 : https://www.kernel.org/pub/linux/kernel/

소스코드 크로스 컴파일하기

1. 크로스 컴파일러 다운로드

일단, 크로스 컴파일 하려는 타겟의 크로스 컴파일러는 대부분 제조사에서 제공해주니, 그것을 쓴다.
그것마저 없다면 대략 난감;;
 
받은 크로스 컴파일러를 리눅스의 PATH 에 등록한다.

2. 크로스 컴파일 설정 수정

make 시에 환경변수 형식으로 넘기는 방법이 있긴한데 귀찮다.
그냥 Makefile 에서 다음의 내용을 수정한다.
ARCH            ?= arm
CROSS_COMPILE   ?= arm-linux-
  • CROSS_COMPILE 변수의 경우 끝에 gcc 를 붙이지 않는다.
  • 크로스 컴파일러는 반드시 PATH 에 등록이 되어있어야 한다.
  • ARCH 는 각자 원하는 아키텍쳐로 설정
    • [kernel_source_path]/arch/xxx 부분과 일치해야한다.

3. 크로스 컴파일을 위한 클린작업

다음의 명령어로 환경설정 클린
# make mrproper
# make distclean

4. 보드 환경설정

target 보드의 커널환경설정을 한다.

2번 작업에서 ARCH 를 설정한 폴더에 config 폴더가 있는데 해당 폴더에 각종 보드의 config 들이 있다.
  • arm 으로 설정했을경우 [kernel_source_path]/arch/arm/config 폴더가 된다.
 
해당 폴더에서 파일을 하나 정한 후, 해당파일명을 이용하여 다음과 같이 설정한다.
# make xxx_defconfig 
위의 과정이 완료되면, .config 파일이 생긴다. 

5. 보드 환경설정 상세 (생략가능)

make menuconfig 를 통해서 커널설정의 상세가능
# make menuconfig

6. 실제 빌드

그냥 make 명령어를 친다.
# make

위의과정에서 make 명령어 뒤쪽에 CC 나 CROSS_COMPILE 을 위한 변수를 세팅하지 않았는데, 이미 2번과정에서 Makefile 을 수정했기 때문에 설정을 하지 않아도 된다.





반응형