커널모듈 크로스컴파일할때의 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 |