Maemo Linux手機平台系列分析:5 安裝Maemo SDK

來源:互聯網
上載者:User

 

 這部分的內容:
  • 前言
  • 什麼是Scratchbox?
  • Scratchbox的組成
  • 安裝的前提條件
  • 自動安裝Scratchbox
  • 自動安裝Maemo SDK
  前言這部分主要介紹安裝開發環境以及其先決條件。Maemo SDK含有開發應用的庫和工具。這個SDK必須安裝在一個稱作Scratchbox的開發環境中,這樣才能使用。我們首先開始安裝Scratchbox, 之後在Scratchbox裡面安裝Maemo SDK。安裝Scratchbox和SDK有手動和自動之分,手動就是執行Nokia公司寫好的一個指令碼,自動把原本需要手動一個個安裝的過程集合在一塊了,這種方式成功率比較高,畢竟是驗證過多次了。我們這裡也採用這種自動安裝的方式,確保環境搭建完成後,能用。 什麼是Scratchbox呢?之前你可能已經看到了Internet Tablet上面跑的應用程式了,也許你會問:如何寫自己的程式。如果你之前使用過不同的GNU工具,也許你想知道這些工具和庫在開發過程中是如何工作的?在Scratchbox裡面, 有個非常特殊的東西:sandbox(沙箱), 就是這個東西提供一些必要的工具,同時把你的開發同外面真實的Linux 系統隔離開來。Scratchbox的另外一個用處是:交叉編譯,你可以在Scratchbox裡面編譯出能直接運行在target裝置上的二進位檔案。Scratchbox這個名字來源於: “Linux from scratch” + “chroot jail”, 投入監獄(一個盒子內)。這可以告訴我們一些資訊:當我們工作於Scratchbox裡面時,你所啟動並執行程式是在一個改變了根目錄的環境下啟動並執行。在Linux系統中,改變一個進程所能看見的路徑是可以做到的。Scratchbox正是利用了這一點,在啟動時,就把它的根目錄切換到其他目錄了,而不再指向它的真實根目錄了。這也是隔離技術所使用的部分伎倆。正因為此,這個新的環境就叫做沙箱了,你在這個隔離的盒子裡玩些危險的東西也不會對真實的環境造成危害。隔離技術還使用了另外一個技術:轉移(通過使用LD_PRELOAD, 由LD_PRELOAD指定的共用庫優於其他共用庫載入) Scratchbox由哪些特性呢?
  • 它是sandbox的具體實現軟體包,sandbox的主要目的就是為了隔離
  • 含有容易使用的交叉編譯工具
  • 支援多個開發人員使用同一個開發環境
  • 支援為每個開發人員單獨配置
  • 能運行原本運行在硬體上的目標程式,通過一個機制:sbrsh實現
  • 能過在host上運行非本地的二進位代碼,通過使用Qemu
在上面這些主要的features中,能利用來開發程式的包已經安裝在Scratchbox環境中了,Scratchbox同時也整合了Debian包管理,因此,你可以在Scratchbox裡面為不同的目標發布軟體包(類似於windows的 .msi檔案,Fedora的 .rpm檔案)。通過使用標準的Debian包管理工具,你可以通過internet直接安裝你需要的一些開發包。Internet Tablet產品也使用了類似的包管理,這就意味著使用Scratchbox編譯的包可以直接安裝到實際的裝置中。Scratchbox 組件:在開始安裝Scratchbox之前,我們先瞭解一些Scratchbox中使用的一些術語,並且從現在開始,我們把Scratchbox簡稱為sbox.
  • core package:核心包,這個包中含有實現sbox的核心工具
  • libs package:庫檔案包,這個包含有core包運行所需要的庫檔案
  • devkit:開發套件,含所有sbox所需要的附加工具,我們主要關心4個devkits. 後面會再介紹。
  • toolchain:工具鏈,像編譯器,連接器等等。
  • target:目標,這裡指我們當前使用的工具鏈和配置。一個目標使用特定的工具鏈,並且具有一個檔案系統。你可以有不同的目標,甚至於這些目標使用相同的工具鏈。這就很方便於測試不同的目標。注意:sbox目標並不能等同於實際的物理裝置。
  • rootstrap: rootstrap是目標根檔案系統,用於滿足基本的開發。Rootstraps通常特定開發目標所需要的基本檔案,不過有時候它的作用僅僅是引導。對於Maemo來講,當然也有rootstrap, 我們把叫做“Maemo SDK”。
安裝的前提條件:在安裝之前,你可以先看看安裝指令,大致有個概念就行。另外還有個需要檢查:binfmt, 這個可以支援在sbox中運行一些指令。Step 1: 檢查binfmt, 如果沒有載入,手動載入root@test-desktop:/home/workspace# lsmod | grep binfmtroot@test-desktop:/home/workspace#root@test-desktop:/home/workspace# modprobe binfmt_miscroot@test-desktop:/home/workspace# lsmod | grep binfmtbinfmt_misc            12936 0 root@test-desktop:/home/workspace# Step 2: 安裝一個X Server第二步就是安裝一個X Server, 它可以俄當作一個X client串連到你的實際系統中,這是非常必要的,對於運行你的程式。X Server目前有3個選擇:
  • Using Xephyr, a Kdrive based X server/client that can emulate 16-color depth for its clients even if it's acting as a client to an 24-bit depth real X server. It also implements modern X protocol extensions. This material will only cover Xephyr.
  • Using Xnest, which is an older version of the subject. Requires your real X server to be at the same depth that it is simulating to its clients.
  • Using Xvnc which is an X server that can be connected to using a VNC client. Using Xvnc is not covered here, but its use should be very close to using Xnest.
命令: root@test-desktop:/home/workspace# apt-get install xserver-xephyrReading package lists... DoneBuilding dependency tree       Reading state information... DoneThe following NEW packages will be installed: xserver-xephyr0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.Need to get 1587kB of archives.After unpacking 3977kB of additional disk space will be used.Get:1 http://security.ubuntu.com gutsy-security/main xserver-xephyr 2:1.3.0.0.dfsg-12ubuntu8.3 [1587kB]Fetched 1587kB in 56s (27.9kB/s)                                               Selecting previously deselected package xserver-xephyr.(Reading database ... 88958 files and directories currently installed.)Unpacking xserver-xephyr (from .../xserver-xephyr_2%3a1.3.0.0.dfsg-12ubuntu8.3_i386.deb) ...Setting up xserver-xephyr (2:1.3.0.0.dfsg-12ubuntu8.3) ...root@test-desktop:/home/workspace# 驗證一下: root@test-desktop:/home/workspace# dpkg -l | grep xephyrii xserver-xephyr                             2:1.3.0.0.dfsg-12ubuntu8.3        Next Generation Nested X Serverroot@test-desktop:/home/workspace#  Step3:自動安裝Scratchbox: 安裝Scratchbox一個比較好的方法是使用自動安裝指令碼,首先從其網站下載指令碼:http://tablets-dev.nokia.com/4.0/maemo-scratchbox-install_4.0.sh root@test-desktop:/home/workspace/maemo_sdk# sh ./maemo-scratchbox-install_4.0.sh -u test-u 選項是指定scratchbox安裝給誰用,我前面配置的使用者名稱是test。這個下載的時間比較長,耐心等待:可能有幾個小時!太長了, Step 4:自動安裝Maemo SDK:下載安裝指令碼:http://tablets-dev.nokia.com/4.0/maemo-sdk-install_4.0.sh root@test-desktop:/home/workspace# sh maemo-sdk-install_4.0.sh[ 選擇第3個安裝,比較全. ]安裝完成後,就有兩個targets:
  • CHINOOK_X86: 適用於開發軟體和測試
  • CHINOOK_ARMEL: 適用於為目標版編譯ARM image檔案.
相關文章

聯繫我們

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