ubuntu11.0.4下編譯Android2.3源碼過程

來源:互聯網
上載者:User

ubuntu11.0.4下編譯Android2.3源碼過程

   
最近幾天修改Android系統源碼,遇到很多讓人崩潰的問題。現在根據記憶寫下,以後方便解決。

    從2.3開始,jdk使用1.6版本及Linux系統使用64位,所以很多工具都要重新安裝。

    以下是第一次編譯時間遇到的問題:

1、許可權不夠遇到多次
/bin/bash: prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: 許可權不夠
/bin/bash: prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: 許可權不夠
/bin/bash: build/core/find-jdk-tools-jar.sh: 許可權不夠
/bin/bash: build/tools/findleaves.py: 許可權不夠
/bin/bash: build/tools/findleaves.py: 許可權不夠
Checking API: checkapi-last
/bin/bash: out/host/linux-x86/bin/apicheck: 許可權不夠

解決:
chmod a+x prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc
對所有沒有許可權的檔案增加可執行許可權

2.make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] 錯誤 1

在32位下編譯,直接make就可以了
在64位下編譯,會出一些錯誤,需要額外安裝一些包:
     A, 沒有gnu/stubs-32.h檔案:
      /usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: 沒有該檔案或目錄
      make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] 錯誤 1
解決方案:
確定你的系統是x86_64 GNU/Linux
       root@mm-desktop:/home/mm/android#
uname -a
       Linux mm-desktop 2.6.27-9-generic #1 SMP Thu Nov 20 22:15:32 UTC 2008 x86_64 GNU/Linux
安裝libc6-dev-i386
     sudo apt-get install libc6-dev-i386

     B。找不到-lstdc++
     /usr/bin/ld: cannot find -lstdc++
解決方案:
安裝 g++-multilib,lib32z1-dev 和 lib32ncurses5-dev
      apt-get install g++-4.2-multilib  lib32z1-dev lib32ncurses5-dev

3.make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp] 錯誤 1

安裝 g++-4.5-multilib
 $ sudo aptitude install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev java-common unixodbc

 

 4.arm-eabi-gcc: error trying to exec 'cc1': execvp: No such file or directory

同事編kernel的時候總是會報下面的錯誤~~最後發現是交叉編譯工具的許可權問題,chmod -R 777 * 就可以了
arm-eabi-gcc: error trying to exec 'cc1': execvp: No such file or directory
總結一下:
1、確認CROSS-COMPILE的目錄在PATH裡面
2、確認cc1是存在的
3、確認交叉編譯工具的許可權

 

 

 

摘錄:

錯誤處理
      在Ubuntu10.10(64位)編譯Android2.3源碼時,遇到各種各樣的問題。不是缺這個,就是少那個。現把這些問題和解決方案羅列出來,供大家參考。

錯誤:
/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] 錯誤 1

解決:
  sudo apt-get install libc6-dev-i386

錯誤:
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp] error 1

解決:
  sudo apt-get install g++-multilib

錯誤:
external/clearsilver/cgi/cgi.c:22: fatal error: zlib.h: No such file or directory
compilation terminated.
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libneo_cgi_intermediates/cgi.o] Error 1

解決:
sudo apt-get install zlib1g-dev

錯誤:
/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1

解決:
sudo apt-get install lib32z1-dev

錯誤:
bison -d  -o out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp frameworks/base/tools/aidl/aidl_language_y.y
/bin/bash: bison: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] Error 127

解決:
sudo apt-get install bison

錯誤:
Lex: aidl <= frameworks/base/tools/aidl/aidl_language_l.l
/bin/bash: flex: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_l.cpp] Error 127

解決:
sudo apt-get install flex

錯誤:
/usr/bin/ld: cannot find -lncurses
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] Error 1

解決:
sudo apt-get install lib32ncurses5-dev

錯誤:
prebuilt/linux-x86/sdl/include/SDL/SDL_syswm.h:55: fatal error: X11/Xlib.h: No such file or directory
compilation terminated.
make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates/android/main-common.o] Error 1

解決:
sudo apt-get install libx11-dev

錯誤:
sh: gperf: not found
calling gperf failed: 32512 at ./makeprop.pl line 96.
make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h] Error 25
make: *** Deleting file `out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h'

解決:
sudo apt-get install gperf

錯誤:
build/core/java.mk:9: *** bin: Target java module does not define any source or resource files. Stop.

解決:
      刪除源碼根目錄下的bin檔案夾,這個檔案夾是匯入eclipse時建立的。

cannot find -lXXX

          所有編譯過程中遇到的類似這樣的錯誤,都是缺少libXXX這樣的庫,解決方案就是:
首先:利用命令:apt-cache search XXX 進行庫搜尋
然後:找那些libXXX-dev這樣的庫進行安裝,命令就是:sudo apt-get install libXXX-dev
最後:繼續執行make

產生韌體

1.在源碼根目錄下執行一下:
. build/envsetup.sh

2.通過所有編譯(make)或模組編譯(mmm)

   需要使用超級使用者進行編譯,要不會出現一下許可權問題

3.通過 export -p 查看HOME 的路徑是否正確,否則修改 HOME 鎖指向的路徑為home/使用者 中,直接 export HOME="/home/使用者"
4.在“/home/使用者”目錄下建立檔案夾 firmware
5.在Android 源碼根目錄下 執行./mkimage.sh

修改./mkimage.sh 中的路徑指向 “/home/使用者”目錄下的檔案夾 firmware

韌體在firmware中產生

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.