最近一直在研究Linux的內(nèi)核驅(qū)動(dòng)宫盔,昨天用如下指令編譯驅(qū)動(dòng)代碼
make -C /usr/src/linux-headers-3.11.0-15-generic M = ~/android/workspace/drivers
結(jié)果出現(xiàn)了如下錯(cuò)誤:
make[1]: 沒(méi)有規(guī)則可以創(chuàng)建“arch/x86/syscalls/../include/generated/uapi/asm/unistd_32.h”需要的目標(biāo)“/usr/src/linux-headers-3.11.0-15-generic/arch/x86/syscalls/syscall_32.tbl”。 停止辜贵。
make: [archheaders] 錯(cuò)誤 2
提示說(shuō)是缺少
/usr/src/linux-headers-3.11.0-15-generic/arch/x86/syscalls/syscall_32.tbl文件,但是我在網(wǎng)上搜索了內(nèi)核文件列表券腔,并沒(méi)有這個(gè)文件胎源,于是花了我整整一天的時(shí)間來(lái)解決這個(gè)問(wèn)題耻卡。吉执。。
后來(lái)終于發(fā)現(xiàn)地来,原來(lái)是指令錯(cuò)了鼠证。。靠抑。正確格式如下:
make -C /usr/src/linux-headers-3.11.0-15-generic M=~/android/workspace/drivers
一定要注意量九,M=/XX/XX 這里不能有空格!K瘫獭荠列!
一個(gè)空格花了我整整一天時(shí)間啊载城!
記得之前在做交叉編譯的時(shí)候肌似,需要修改Makefile的以下內(nèi)容:
ARCH ?= arm #platform
CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
同樣要注意! 這里arm后面不能有空格诉瓦!
當(dāng)時(shí)也是多了一個(gè)空格川队,死活編譯失敗。后來(lái)搜到了一位大俠的博客睬澡,說(shuō)花了兩個(gè)小時(shí)結(jié)果就是一個(gè)空格固额。。煞聪。斗躏。 悲劇
所以,也以此分享給大家昔脯,希望大家遇到這個(gè)問(wèn)題能夠迅速解決啄糙,不要再次花費(fèi)太多不必要的時(shí)間。