收集各种奇葩问题,以便日后查阅
- 在开始编译内核模块之前,先编译一遍源码,(.config)架构与目标板一致
- 在linux内核编译中在arch/arm/config中找到配置文件,复制到根的.config之后再make,不然是无法编译的
- 不要试图用gcc -o *.ko 编译内核文件,moudle是源码的一个make选项(请使用Makefile)
- 记住修改根路径下的arch,与cross_conpile这两个选项
- 内核模块版本不对时,无法安装模块改./include/linux/vermagic.h /usr/src/include/generated/utsrelease.h下对应的版本号即可(幻数的修改)
- 用modinfo可查看模块信息
- modprobe 提示FATAL: Module xxx not found. 这个问题很常见。在modprobe前,需要使用depmod xxx.ko
modprob的参数 –force-vermagic可以忽略幻数的版本检测
交叉编译出的应用程序明明是存在的可是说是no such file or device 这个问题是由于交叉编译工具工具不对导致的。
https://www.embbnux.com/2014/04/09/cross_compile_no_such_file_or_directory/