Android 2.3.1 移植 unicore32(一)

來源:互聯網
上載者:User

確定了我們sep0611的基準版本之後,接下來就是在北大小本上移植android 2.3.1

移植過程可以劃分為幾個階段:

·編譯系統:涉及目錄 build/core ,device,prebuilt

 

·c庫:bionic

 

·dalvik:去掉jit,預設使用解譯器

 

·其他:external、system、framework

 

 

第一步 編譯系統

 

步驟:

1.      
Device

建立一個公司相關目錄:mkdir seuic

建立一個產品目錄:mkdir sep0611 @device/seuic/

產品相關的編譯設定檔:

Android.mk:總編譯檔案        

BoardConfig.mk:板級產品編譯設定檔 

device.mk:       

setup-makefiles.sh

AndroidProducts.mk:包含full_sep0611.mk

CleanSpec.mk   

full_sep0611.mk: 裝置級產品設定檔

vendorsetup.sh: lunch 配置指令碼

2.      
build/core

編譯系統:

1)  在build/core/combo/arch:mkdir
unicore32

建立一個sep0611.mk宣各處理器架構相關配置

例如: #ARCH_ARM_HAVE_THUMB_SUPPORT := true<br /> #ARCH_ARM_HAVE_FAST_INTERWORKING := true<br /> #ARCH_ARM_HAVE_64BIT_DATA := true<br /> #ARCH_ARM_HAVE_HALFWORD_MULTIPLY := true<br /> #ARCH_ARM_HAVE_CLZ := true<br /> #ARCH_ARM_HAVE_FFS := true 

2)  建立一個TARGET_linux-unicore32.mk@build/core/combo

這個檔案主要申明了編譯器目錄,編譯選項,標頭檔等

3)  修改dynamic_binary.mk@build/core

不使用prelink和strip(暫時沒做好)

ifeq ($(TARGET_ARCH),unicore32)<br />LOCAL_PRELINK_MODULE := false<br />endif<br />ifeq ($(TARGET_ARCH),unicore32)<br />LOCAL_STRIP_MODULE := false<br />endif 

4)  修改android2.3.1/build/core//executable.mk檔案

聲明編譯靜態可執行檔所需要的啟動相關的lib庫目錄

ifeq ($(TARGET_ARCH),unicore32)<br /> ifeq ($(LOCAL_FORCE_STATIC_EXECUTABLE),true)<br />$(linked_module): $(TARGET_CRTBEGIN_STATIC_O) $(all_objects)$(all_libraries)$(TARGET_CRTEND_COM_O)$(TARGET_CRTEND_EXECUTABLE_O)$(transform-o-to-static-executable)<br /> 29 else<br /> 30 $(linked_module): $(TARGET_CRTBEGIN_EXECUTABLE_O) $(all_objects) $(all_libraries) $(T ARGET_CRTEND_COM_O) $(TARGET_CRTEND_EXECUTABLE_O)<br /> 31 $(transform-o-to-executable)<br /> 32 endif<br /> 33 else # !unicore32<br /> 34 ifeq ($(LOCAL_FORCE_STATIC_EXECUTABLE),true)<br /> 35 $(linked_module): $(TARGET_CRTBEGIN_STATIC_O) $(all_objects) $(all_libraries) $(TARGE T_CRTEND_O)<br /> 36 $(transform-o-to-static-executable)<br /> 37 else<br /> 38 $(linked_module): $(TARGET_CRTBEGIN_DYNAMIC_O) $(all_objects) $(all_libraries) $(TARG ET_CRTEND_O)<br /> 39 $(transform-o-to-executable)<br /> 40 endif<br /> 41 endif # unicore32<br />  

主要由以下幾個啟動相關調用庫:

 

 

 

 

 

 


crtbegin_com.o 
crtbegin_executable.o 
crtend_com.o  crtend_executable.o

我們主要實現了兩個:crtend_com.o 
crtend_executable.o

5)  修改build/core//shared_library.mk:與啟動庫相關

53 ifeq ($(TARGET_ARCH),unicore32)<br /> 54 $(linked_module): $(all_objects) $(all_libraries) /<br /> 55 $(LOCAL_ADDITIONAL_DEPENDENCIES) /<br /> 56 $(TARGET_CRTBEGIN_COM_O) $(TARGET_CRTEND_COM_O)<br /> 57 $(transform-o-to-shared-lib)<br /> 58 else<br /> 59 $(linked_module): $(all_objects) $(all_libraries) /<br /> 60 $(LOCAL_ADDITIONAL_DEPENDENCIES) /<br /> 61 $(my_target_crtbegin_so_o) $(my_target_crtend_so_o)<br /> 62 $(transform-o-to-shared-lib)<br /> 63 endif 

 

6)在prebuilt下添加我們編譯器unicore-linux-xxx
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.