Chinaunix首页 | 论坛 | 博客
  • 博客访问: 842229
  • 博文数量: 244
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 2420
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-29 09:07
文章分类

全部博文(244)

文章存档

2011年(4)

2010年(3)

2009年(72)

2008年(119)

2007年(46)

我的朋友

分类: LINUX

2009-03-25 21:55:57

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共享程式

AndroidJava程式可輕鬆地透過JNI去呼叫此.so程式庫。

也可以再利用Cross Compiler編譯一個C主函數(main())去呼叫它。

 

 

 

~ END ~

 

 (by Misoo團隊)

 
 
 
阅读(632) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~