커널모듈 크로스 컴파일시 유의사항
1. ARCH, CROSS_COMPILE 디렉티브 꼭 넣어주기.
이때 Makefile 속에 명시해주려면 아래처럼 export 랑 := 로 써줘야함.
root@ubuntu:/var/www/samsung/rootkit# cat Makefile
export ARCH:=arm
export CROSS_COMPILE:=/var/www/samsung/gnu/arm/lin/bin/arm-xilinx-linux-gnueabi-
obj-m += stealth_file.o
KDIR := /var/www/samsung/linux-xlnx-xilinx-v2014.4-trd
PWD := $(shell pwd)
CC := /var/www/samsung/gnu/arm/lin/bin/arm-xilinx-linux-gnueabi-gcc
defulat:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
rm -f *.ko *.mod.* .*.cmd *.o
rm -f Module.symvers modules.order
rm -rf .tmp_versions
2. 커널소스 내부에서 modpost 가 커널모듈을 linking 해주게 되어있는데
이놈이 실행불가능하면(32bit OS 에서 64bit ELF 를 돌리려한다던지) modpost 에러가 나게되어있음.
이점도 참고할것.
3. 꼭 xilinx 크로스컴파일러 아니어도 그냥 arm-linux-gnueabi 로해도 간단한건 잘됨.
4. 어떤경우는 커널을 컴파일해야 생성되는 헤더들이 있기때문에, 간단한 소스는 빌드되지만 복잡한건 크로스컴파일이 실패하는경우 그것도 고려할것.
'Programming' 카테고리의 다른 글
Intel SGX basics (1) | 2016.07.12 |
---|---|
Mount QEMU qcow image (0) | 2015.12.17 |
RSA crap (0) | 2015.10.19 |
Linux 쉘커맨드로 반복적으로 argv escape 하기 귀찮을때 (0) | 2015.10.14 |
zlib compress/decompress (0) | 2015.08.01 |