0

我正在編譯Android模擬器的Linux源代碼。當我執行make命令(用於構建和交叉編譯linux源代碼)時,出現以下錯誤「pmem.c」文件。錯誤與「pmem.c」編譯Android的源代碼爲Android

[email protected]:~/common# make 
CHK  include/linux/version.h 
CHK  include/linux/utsrelease.h 
SYMLINK include/asm -> include/asm-x86 
CALL scripts/checksyscalls.sh 
CHK  include/linux/compile.h 
CC  drivers/misc/pmem.o 
drivers/misc/pmem.c:441: error: conflicting types for ‘phys_mem_access_prot’ 
/home/preetam/common/arch/x86/include/asm/pgtable.h:383: note: previous declaration of   ‘phys_mem_access_prot’ was here 
drivers/misc/pmem.c: In function ‘flush_pmem_file’: 
drivers/misc/pmem.c:805: error: implicit declaration of function ‘dmac_flush_range’ 
drivers/misc/pmem.c: In function ‘pmem_setup’: 
drivers/misc/pmem.c:1265: error: implicit declaration of function ‘ioremap_cached’ 
drivers/misc/pmem.c:1266: warning: assignment makes pointer from integer without a cast 
make[2]: *** [drivers/misc/pmem.o] Error 1 
make[1]: *** [drivers/misc] Error 2 
make: *** [drivers] Error 2 
[email protected]:~/common# 

如何解決此錯誤。似乎在「pmem.c」文件中可能存在一些問題,我將不得不選擇不同的git存儲庫。但那將是一件非常複雜的事情,因爲現在我已經完成了大部分事情直到這裏。我可能不得不看這個文件的正確版本。請有人告訴我該怎麼辦?

如何解決這個錯誤。

請幫助..thankyou!

+0

你從哪裏得到了android內核源代碼e代碼? – KBoek 2011-03-19 08:03:53

+0

您的ARCH設置不再支持。 CROSS_COMPILE也從命令行中消失。在這種情況下,你的構建會失敗,因爲你已經開始用ARCH = arm構建你的內核了! 無論如何,你的帖子並沒有真正能夠按照教程,並在每一個失敗的步驟發佈一個新的問題,而沒有試圖自己去想你做錯了什麼。但更糟糕的是,你甚至沒有投票或承認幫助你的人。 – Longfield 2011-03-19 08:39:39

+0

我很抱歉,但爲了「投票」,我應該有15個聲望點。 – Preetam 2011-03-19 09:34:25

回答

2

您粘貼的郵件中存在多個錯誤,包括衝突類型和隱式聲明。你可能想三件事情來驗證:

  1. 沒有你選擇正確的處理器架構(ARCH)和交叉編譯器定義
  2. 確實從另一個拱文件所選擇的架構組合(這是難以遏制的,但你可以從檢查錯誤信息中提到的文件的位置開始)
  3. 檢查這些文件本身,看它是一個錯誤(非常不可能,但你永遠不知道),而且你實際上必須改變一些代碼
+0

對不起,我沒有正確地編寫代碼。那麼,我得到了這個,但現在又有一個錯誤「drivers/rtc/alarm.c:16:致命錯誤:asm/mach/time.h:沒有這樣的文件或目錄」。我檢查了asm目錄,time.h文件存在,我不明白什麼是錯誤的? – Preetam 2011-03-19 10:06:47

+0

這已解決。 – Preetam 2011-04-02 09:44:29