drivers/net/phy/phy.c  fatal error: mach/platform.h: No such file or directory

操作环境:deepin v20

内核下载:3.4

编译器下载:请看我上一篇嵌入式博文

操作过程参考: 这篇博客

按照博客,执行make zImage ,编译过程中终止并报错如上。

一窍不通的我,只能 find . -name 'platform.h' 从结果中没有看到博客中所选用的开发板型号,于是我从结果里换了一个型号s5p4418 

返回博客前面,查看和开发板型号相关的设置,是 make vexpress_defconfig

替换为 make s5p4418_defconfig 执行报错:

Can't find default configuration "arch/arm/configs/s5p6818_defconfig"

于是我到该目录下,查看所有 *_defconfig ,同时还要保证在前面查看型号的结果里也存在的,比如s5p4418 ,但是defconfig文件夹里没有 s5p4418_defconfig ,而是s5p4418_各种参数_defconfig ,于是我尝试选择了其中一个

make s5p4418_asb_linux_defconfig

这次成功编译出zImage

更新:虽然编译没问题。但是后面发现s5p4418这款开发板,好像在我的qemu模拟器上未提供模拟,qemu-system-arm -M ? 可以查看支持哪些开发板的模拟。 猜测,这里需要模拟器支持的版本,和源码提供的defcconfig,还有头文件 platform.h 和 devices.h 所在的目录名,都要一致才行。而我下载的源码3.4并非一个长期支持版本,所以可能就不完整了。所以后来我又下载了长期支持版本号的linux,如从网易下载 4.4.76 ,并选择型号 vexpress 开发板,最后成功运行虚拟开发板。


另一个和博客不同的地方,make menuconfig 报错:

'make menuconfig' requires the ncurses libraries.

Install ncurses (ncurses-devel) and try again.

根据提示,apt-cache search ncurses-devel 找不到,然后360搜到 libncurses5-dev 这个名字,于是apt-cache search libncurses 从结果里挑选并尝试,只要不报错就行。


博客里vi MakeFile 是

CROSS_COMPILE ?= arm-none-linux-gnueabi-

如果后面编译不通过的话,可以试试改成 ? =  /绝对路径/arm-none-linux-gnueabi-