2015-07-06 28 views
6

我重新编译了我的Raspberry Pi的Linux内核以启用一些调试功能,新内核编译在我的X86桌面通过由https://github.com/raspberrypi/tools提供的工具,PC的新的内核似乎工作正常,直到我编译我hello-world驱动模块就可以了,下面的信息被打印:`./scripts/recordmcount:Syntax error:“(”unexpected“会在Raspberry Pi上编译驱动程序模块时报告

make -C /lib/modules/3.18.10-d0u9/build M=/home/pi/Linux-Device-Driver-3.18/1_Hello-World modules 
make[1]: Entering directory '/usr/src/linux-source-3.18' 
    CC [M] /home/pi/Linux-Device-Driver-3.18/1_Hello-World/main.o 
./scripts/recordmcount: 1: ./scripts/recordmcount: Syntax error: "(" unexpected 
scripts/Makefile.build:257: recipe for target '/home/pi/Linux-Device-Driver-3.18/1_Hello-World/main.o' failed 
make[2]: *** [/home/pi/Linux-Device-Driver-3.18/1_Hello-World/main.o] Error 2 
Makefile:1398: recipe for target '_module_/home/pi/Linux-Device-Driver-3.18/1_Hello-World' failed 
make[1]: *** [_module_/home/pi/Linux-Device-Driver-3.18/1_Hello-World] Error 2 
make[1]: Leaving directory '/usr/src/linux-source-3.18' 
Makefile:19: recipe for target 'modules' failed 
make: *** [modules] Error 2 

hello-world模块是相当简单,它在我的X86 PC上正确编译。

我想这也许是我的方式堆Linux内核错了...

有没有人遇到这个问题?

顺便说一句,如何正确交叉编译内核的树莓派为驱动程序开发?

+0

如果你尝试在脚本文件夹中“make recordmcount”,你会得到一个错误吗? – ikstream

回答

1

不知道有关重新编译的内核版本,哪个os版本等的更多细节,很难确定究竟发生了什么。

基于个人经验安装Raspbian是一种更为宽容的方式来让事情在pi上运行。足够的“Debian”使得它能够在其上运行,这与大多数Linux环境有些相似。

Sparkfun在installing Raspbian上有很好的指导,Raspbian网站有很多可用的文档,似乎是一个非常活跃的社区。抱歉,我不能提供更多的帮助,但是没有关于内核如何重新编译,启用了哪些调试功能的更多细节,等等,很难更具体地解决某个解决方案。

1

你在哪里编译你的模块?在RasPi上?

如果是这样,交叉编译期间创建的./scripts/recordmcount可执行文件是为x86构建的(因为它是在构建内核时运行的地方),但是当您在Pi上构建模块时,您正试图运行它在Pi手臂上。

在x86上交叉编译你的内核模块,就像你交叉构建你的内核或者为Pi创建recordmcount并替换在交叉编译期间创建的x86二进制文件(但是你可能遇到类似的问题,如果你这样做)