본문 바로가기

Programming

kernel module cross compile makefile

커널모듈 크로스컴파일할때의 Makefile 샘플.




KERNEL_DIR=/*커널소스트리(커널컴파일도 시켜놓은 상태여야함)*/


obj-m := /*소스파일명*/.o

PWD := $(shell pwd)

default:

        $(MAKE) ARCH=arm CROSS_COMPILE=/*크로스컴파일러 툴체인 prefix*/ -C $(KERNEL_DIR) SUBDIRS=$(PWD) modules

clean:

        $(MAKE) -C $(KERNEL_DIR) SUBDIRS=$(PWD) clean





주의할 점은 커널소스만 있으면 되는게 아니고 컴파일된 커널소스 폴더를 명시해줘야 한다는점 (일부 소스코드가 컴파일해야 생성되기 때문에) 또한 타겟 아키텍쳐가 ARM인경우 ARCH=arm 으로... CROSS_COMPILE 디렉티브에 Cross Compiler 툴체인 Prefix 를 명시해줘야 하는데

크로스컴파일러 툴체인 prefix 의 경우 


arm-xilinx-eabi-addr2line  arm-xilinx-eabi-objcopy             arm-xilinx-linux-gnueabi-gcc

arm-xilinx-eabi-ar         arm-xilinx-eabi-objdump             arm-xilinx-linux-gnueabi-gcc-4.6.3

arm-xilinx-eabi-as         arm-xilinx-eabi-ranlib              arm-xilinx-linux-gnueabi-gcov

arm-xilinx-eabi-c++        arm-xilinx-eabi-readelf             arm-xilinx-linux-gnueabi-gdb

arm-xilinx-eabi-c++filt    arm-xilinx-eabi-size                arm-xilinx-linux-gnueabi-gdbtui

arm-xilinx-eabi-cpp        arm-xilinx-eabi-sprite              arm-xilinx-linux-gnueabi-gprof

arm-xilinx-eabi-elfedit    arm-xilinx-eabi-strings             arm-xilinx-linux-gnueabi-ld

arm-xilinx-eabi-g++        arm-xilinx-eabi-strip               arm-xilinx-linux-gnueabi-nm

arm-xilinx-eabi-gcc        arm-xilinx-linux-gnueabi-addr2line  arm-xilinx-linux-gnueabi-objcopy

arm-xilinx-eabi-gcc-4.6.3  arm-xilinx-linux-gnueabi-ar         arm-xilinx-linux-gnueabi-objdump

arm-xilinx-eabi-gcov       arm-xilinx-linux-gnueabi-as         arm-xilinx-linux-gnueabi-ranlib

arm-xilinx-eabi-gdb        arm-xilinx-linux-gnueabi-c++        arm-xilinx-linux-gnueabi-readelf

arm-xilinx-eabi-gdbtui     arm-xilinx-linux-gnueabi-c++filt    arm-xilinx-linux-gnueabi-size

arm-xilinx-eabi-gprof      arm-xilinx-linux-gnueabi-cpp        arm-xilinx-linux-gnueabi-sprite

arm-xilinx-eabi-ld         arm-xilinx-linux-gnueabi-elfedit    arm-xilinx-linux-gnueabi-strings

arm-xilinx-eabi-nm         arm-xilinx-linux-gnueabi-g++        arm-xilinx-linux-gnueabi-strip


이런식으로 bin 폴더 아래에 다양한 툴들이 있을때 arm-xilinx-eabi- 와 같은 공통된 prefix 를 명시해주면됨.

또한 크로스컴파일러별로 특정한 환경변수를 반드시 명시해줘야 하는 경우들도 있음.


'Programming' 카테고리의 다른 글

IDA remote debugging  (0) 2013.06.24
x64 parameter passing  (0) 2013.06.24
Xilinx QEMU bridge mode  (0) 2013.06.14
md5 sqlinjection hash  (0) 2013.06.12
python post script  (0) 2013.06.12