android内核错误:'struct dentry'没有名为'd_alias'的成员

时间:2016-07-22 13:58:11

标签: android linux-kernel android-kernel

所以我已经为我的motorola mobile克隆了android内核源代码,并且正在构建它。

Android内核信息:

名称:Android内核摩托罗拉MSM8610

设备(预期):Moto E

硬件:MSM8610

Github:Kernel Source Link

程序:

首先,我使用

创建了.config文件
make ARCH=arm msm8610_defconfig

然后我尝试通过创建文件名 startBuild 来构建内核映像

startBuild:

make ARCH=arm SUBARCH=arm CROSS_COMPILE=/media/mohit/776b997b-f9a1-46c2-92a0-7f438c7b78e3/code/toolchain/arm-eabi-4.6/bin/arm-eabi- -j4

给予所需的权限

chmod +x startBuild

并执行它

./startBuild

但是我收到以下错误消息:

  CHK     include/linux/version.h
make[1]: Nothing to be done for 'arch/arm/boot/dtbs'.
  CHK     include/generated/utsrelease.h
make[1]: 'include/generated/mach-types.h' is up to date.
  CALL    scripts/checksyscalls.sh
  CHK     include/generated/compile.h
  CHK     kernel/config_data.h
  CC      fs/overlayfs/inode.o
fs/overlayfs/inode.c: In function 'ovl_permission':
fs/overlayfs/inode.c:71:11: error: 'struct dentry' has no member named 'd_alias'
fs/overlayfs/inode.c:71:11: warning: initialization from incompatible pointer type [enabled by default]
error, forbidden warning: inode.c:71
scripts/Makefile.build:307: recipe for target 'fs/overlayfs/inode.o' failed
make[2]: *** [fs/overlayfs/inode.o] Error 1
scripts/Makefile.build:443: recipe for target 'fs/overlayfs' failed
make[1]: *** [fs/overlayfs] Error 2
Makefile:957: recipe for target 'fs' failed
make: *** [fs] Error 2
make: *** Waiting for unfinished jobs..

那么如何解决这个错误?

谢谢。

1 个答案:

答案 0 :(得分:1)

由于d_alias的Linux内核struct dentry成员版本3.19已移至成员联盟d_u,请参阅include/linux/dcache.hstruct dentry的定义。< / p>

因此,将d_alias成员的引用替换为d_u.d_alias应该有助于解决兼容性问题。

也可以在所有文件中全局执行该重放,参见例如this post关于在vmware-tools中修复给定的错误。