2016-07-22 30 views
0

所以我克隆了我的摩托羅拉手機的android內核源碼,並且正在構建它。android內核錯誤:'struct dentry'沒有名爲'd_alias'的成員

Android的內核信息:

名稱:Android內核摩托羅拉MSM8610

設備(意):摩托è

硬件:MSM8610

Github上:Kernel Source Link

程序:

首先,我做了使用

make ARCH=arm msm8610_defconfig 

然後我試圖創建一個文件名startBuild

startBuild生成內核映像的config文件:

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.. 

那麼如何解決這個問題?

謝謝。

+0

谷歌搜索錯誤信息找到[本文](https://github.com/rasa/vmware-tools-patches/issues/29#issuecomment-76707190),它描述了另一個linux組件的解決方案:用'd_alias'替換'd_u.d_alias'。它也應該有助於你的情況。 – Tsyvarev

+0

@Tsyvarev Yean我也試過,沒有工作。至於我的inode.c文件'd_u'和'd_alias'沒有定義,那可能就是這種情況。 – Mohit

+0

那麼,你試圖編譯哪個分支?引用的默認值是* cm-12.0 *,這肯定不會遇到這個問題('struct dentry' [has member](https://github.com/CyanogenMod/android_kernel_motorola_msm8610/blob/cm-12.0/include/linux) /dcache.h#L116)'d_alias')。在分支* cm-13.0 *給定​​struct [has member](https://github.com/CyanogenMod/android_kernel_motorola_msm8610/blob/cm-13.0/include/linux/dcache.h#L116)'d_u'。 – Tsyvarev

回答

1

由於Linux內核的版本3.19的struct dentryd_alias成員已被移動到會員的工會d_u,看到include/linux/dcache.hstruct dentry定義。

因此,將對d_alias成員的引用替換爲d_u.d_alias應該有助於解決該兼容性問題。

也可以全部在全部文件中執行替換,參見例如。 this post關於修復vmware-tools中的給定錯誤。

相關問題