我想在我的x86 ubuntu
linux上交叉编译ARM内核模块.
我已经下载了内核源代码(linux 2.6.26,因为目标ARM机器正在运行这个linux版本).
和apt-get’ed arm交叉编译器.如你看到的.
我已经下载了内核源代码(linux 2.6.26,因为目标ARM机器正在运行这个linux版本).
和apt-get’ed arm交叉编译器.如你看到的.
root@declspec-desktop:/var/www/module_test# arm-linux-gnueabi- arm-linux-gnueabi-addr2line arm-linux-gnueabi-cpp-4.5 arm-linux-gnueabi-gcov-4.5 arm-linux-gnueabi-ld.gold arm-linux-gnueabi-ranlib arm-linux-gnueabi-strip arm-linux-gnueabi-ar arm-linux-gnueabi-elfedit arm-linux-gnueabi-gprof arm-linux-gnueabi-nm arm-linux-gnueabi-readelf arm-linux-gnueabi-as arm-linux-gnueabi-gcc arm-linux-gnueabi-ld arm-linux-gnueabi-objcopy arm-linux-gnueabi-size arm-linux-gnueabi-c++filt arm-linux-gnueabi-gcc-4.5 arm-linux-gnueabi-ld.bfd arm-linux-gnueabi-objdump arm-linux-gnueabi-strings
以下是我的内核模块的Makefile(hello_module.ko)
编译(对于我的x86机器),这工作正常.
obj-m += hello_module.o KDIR := /lib/modules/$(shell uname -r)/build #PWD:=$(shell pwd) all: $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules clean: rm -rf *.o *.ko *.mod.* .c* .t*
现在,我在原始工作的Makefile中需要更改什么
为了交叉编译Linux 2.6.26的内核模块用于ARM?
以及linux源码和linux头码源之间的区别?
我每次编译一些内核时都看过这些内容,但我仍然没有得到它.
我建议在移动到hello_module之前构建内核源代码.这将确认您的arm交叉编译器安装正常.
很多时候,工具链问题追溯到需要这些:
export CROSS_COMPILE=arm-linux-gnueabi- export ARCH=arm
此外,在交叉工具链安装时需要更新PATH,因此可以从执行make中找到工具. CodeSourcery安装可以为您完成,但PATH更新仅在注销/登录后生效.
我不清楚你如何获得上面的控制台输出.如果问题仍然存在,我建议做类似的事情,并将结果作为评论发布.
printenv | grep PATH whereis arm-linux-gnueabi-gcc which arm-linux-gnueabi-gcc