天天看點

《BREW進階與精通——3G移動增值業務的營運、定制與開發》連載之64---BREW 應用的交叉編譯

版權聲明:本文為半吊子子全棧工匠(wireless_com,同公衆号)原創文章,未經允許不得轉載。 https://blog.csdn.net/wireless_com/article/details/5744090

為了使應用在支援BREW的手機上運作,必須将應用的源代碼針對ARM CPU體系結構重新編譯。其中編譯後可執行檔案應為一個擴充名為.mod的檔案,例如myapp.mod。

進行重編譯的最好工具就是ARM開發工具組(ARM Developer Suite),可以是1.0.1以上的版本,為了更好的實作相容性,選用ARM開發工具組的版本最好與手機平台的自身編譯版本一緻。此外,建議将ARM開發工具組儲存在C:/ADS,即確定ARM開發工具組儲存在中間沒有空格的路徑下,否則在ARM開發工具組在執行編譯的時候可能會産生問題。該路徑在makefiles(.mak檔案)中的假設是SDK中所有示例程式儲存的位置。

ARM開發工具組使用一個指令行編譯器去構造.mod檔案,開發者也可以通過BREW add-in在內建開發環境中執行。構造程式是有一個同應用源檔案在同一目錄下的makefile。可以自行建立makefile,并運作它構造一個.mod檔案,也可以使用BREW Add-in內建到Visual C++的使用者界面中的工具。

為了建立makefile,打開 Visual C++中的應用項目工作空間(.dsw file)。這裡應該有Visual C++的工具欄,上面有三個圖示,顯示“生成ARM Makefile”、“執行BREW MIF編輯器”和“執行BREW MIF編輯器”。為了生成makefile, 點選顯示“生成ARM Makefile”的圖示。如果當滑鼠接近工具欄圖示時并沒有出現工具提示,選擇Tools/Customize,在選擇Toolbars标簽,然後選中 Show ToolTips(顯示工具提示)。如果工具欄和三個工具提示沒能出現,則選擇Tools / Customize,再選擇 Add-ins and Macro Files (插件和宏檔案)的标簽,選中ARMMakeBREWApp,關閉對話框。如果工具欄還是沒能顯示,選擇Tools / Customize,再選擇 Toolbars标簽,其中在工具欄清單中應有尚未選中的一項,叫Toolbar1,選中該項,工具欄就會出現。

如果ARM開發工具組是1.1或以上版本的ARM開發系統,可能需要修改一下Makefile檔案。以下兩行是需要修改的語句:

ZA = -za1 # LDR may only access 32-bit aligned addresses

ZAS = -zas4 # Min byte alignment for structures

将上兩行更改為:

ZA = -zo1 # LDR may only access 32-bit aligned addresses

ZAS = -zos4 # Min byte alignment for structures

交叉編譯既可以從IDE中運作又可以通過指令行的方式運作。在基于Visual Studio 的內建開發環境中,在Visual C++中選擇Tools / BREW ARM Make即可開始編譯該應用。

指令行編譯的方法是,打開一個指令視窗(“DOS 框”) 并鍵入類似以下的指令:

       nmake /f myapp.mak all

nmake是Visual C++中的一個應用程式。執行該操作的路徑應包含在PC機的系統路徑變量中,以友善使用。在這個指令中,“/f ”切換确定使用那個.mak file進行輸入。“all”告訴nmake來重構目标檔案。當構造完成之後,一個新.mod檔案就會出現在應用的目錄中,該檔案是應用程式在裝置上使用的二進制版本。幾個中間檔案也會出現在目錄中。如果你想清除中間檔案和應用子產品檔案,請在Visual C++選擇Tools / BREW ARM Make Clean,也可以在一個指令視窗通過一個如下的指令來實作:

       nmake /f myapp.mak clean

繼續閱讀