免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1737 | 回复: 0
打印 上一主题 下一主题

Android與Cross Compiler之關係 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-25 21:55 |只看该作者 |倒序浏览
4:Android與Cross Compiler之關係
高煥堂談:Android與Cross Compiler之關係
   ---- 在Ubuntu/Linux/X86 環境裡使用2007q3-51交叉編譯C程式,然後放入Android裡執行。

l            何謂
                       
                          4:Android與Cross Compiler之關係
高煥堂談:Android與Cross Compiler之關係
   ---- 在Ubuntu/Linux/X86 環境裡使用2007q3-51交叉編譯C程式,然後放入Android裡執行。

l            何謂Cross compiler(交叉編譯器)?
Cross Compiler主要在資源較豐富的電腦上執行,而編譯出能在別的電腦上執行的目的碼(Object Code)。例如,當我們想寫個C程式,讓它能在Android手機裡跑。Android手機的ARM-CPU及記憶體容量都很小,我們無法在資源有限的Android/ARM裡進行編輯及編譯C程式。可行的方法是:在X86 PC環境裏編輯C程式,然後使用Cross Compiler去編譯出適合ARM-CPU裡執行的目的碼。這稱為Cross Compiler。

l            安裝ARM GNU/Linux 交叉編譯器
在Ubuntu裡安裝交叉編譯器的步驟是:
Step-1. 在Ubuntu畫面上,直接上網:


Step-2. 選取2007q3-51版,並下載:


Step-3.  這會自動安裝於 /home/tom/arm-2007q3/裡。
Step-4.  這樣,交叉編譯器就安裝完成了。

l           使用Cross Compiler編譯C函數,放入Android裡執行。
          可先將.h和.c程式碼存於自訂的Proj_01檔案夾裡,如下:


l           開始進行交叉編譯C程式碼
     接下來,對HalfAdder.c和 com_misoo_gx05_NativeJniAdder.c兩個程式檔,進行編譯,
     將  產生.o的目的程式(Object Code)檔。

*** 編譯HalfAdder.c程式 ***


*** 編譯com_misoo_gx05_NativeJniAdder.c程式 ***


    從畫面可看到他已經產出了兩個ARM-based的 .o 目的程式檔了。

l           連結出可在ARM上執行的 .so程式檔
     對HalfAdder.o和 com_misoo_gx05_NativeJniAdder.o兩個目的程式檔,
     進行連結而產生.so的共享程式檔案,使用下述命令:


l           將libNativeJniAdder.so共享程式檔拷貝並放置到Android模擬器裡
例如,在Windows環境。
Step-1. 先將.so檔案拷貝到c:/android-sdk-windows-1.0_r1/tools/裡。
Step-2. 啟動模擬器。
Step-3. 進入c:/android-sdk-windows-1.0_r1/tools/,並使用adb push命令
      將.so檔案,存入模擬器的/system/lib/裡。


l           撰寫主程式去呼叫這libNativeJniAdder.so共享程式
在Android的Java程式可輕鬆地透過JNI去呼叫此.so程式庫。
也可以再利用Cross Compiler編譯一個C主函數(main())去呼叫它。



~ END ~

(by Misoo團隊)
  



                       
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/49742/showart_1879692.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP