2012-07-16 98 views
2

首先,一些背景:我試圖寫驅動程序和應用爲Android上的BeagleBoard-XM。交叉編譯器默認包括路徑設置

我已經下載了他們的Android開發工具包,安裝了它,並在http://processors.wiki.ti.com/index.php/TI-Android-ICS-4.0.3-DevKit-3.0.0_DevelopersGuide

能夠成功地建立一個使用方向上的一切,我已經能夠做出以下沒有http://tldp.org/LDP/lkmpg/2.6/lkmpg.pdf的步驟我自己的骨架內核模塊的問題。我可以將.ko文件複製到Android設備,insmod的,rmmod的等

我已經厭倦了被默認的內部給出的基本外殼,以爲我想補充的busybox。我試着按照http://omappedia.org/wiki/Android_Installing_Busybox_Command_Line_Tools的指示操作,但是在標準libc頭文件中出現編譯錯誤。

周圍挖了不少,我已經確定的是,在TI的Android開發套件提供的預構建的交叉編譯器不搜索正確的路徑。

我通過創建,其中包括我自己的.c文件證實了這一點,並試圖 臂EABI - 海合會blah.c -o等等 編譯它,並會見了相同的結果(無法找到頭有問題的文件)

'武裝 - EABI - 海合會-print-PROG-NAME = CC1' -v給了我這樣的:

  • 忽略不存在的目錄 「在/ usr /本地/谷歌/家庭/ android/cupcake_rel_root/usr/local/include「
  • 忽略不存在的目錄 「/usr/local/lib/gcc/arm-eabi/4.4.3/include」
  • 忽略不存在的目錄「/usr/local/lib/gcc/arm-eabi/4.4.3/包括固定 「
  • 忽略不存在的目錄 」/usr/local/lib/../arm-eabi/include「
  • 忽略不存在的目錄」 的/ usr /本地/谷歌/家庭/安卓/ cupcake_rel_root/usr/include目錄「

在全新安裝的ubuntu 10.04上,這些路徑都不存在。我用我的交叉編譯器是/usr/TI-Android/prebuilt/linux-86/toolchain/arm-eabi-4.4.3/。我沒有做,除了運行位.bin文件,這是Android開發工具包東西(這似乎更像是簡單地從.bin文件中提取本身,我不記得它做其他任何事情)

所以,一幾個問題:

  1. 到底是如何做到的一切(即機器人,X-裝載機,u-boot的,內核),通過只把交叉編譯工具的bin到$ PATH(如如何對構建文件說)。我認爲它(make menuconfig進行?)不會在固定了基於可執行文件的位置,包括路徑一些魔術,但...
  2. 爲什麼不busybox的工作方式相同,因爲它似乎有一個類似的建看基礎設施?
  3. 我該如何做到這一點,我可以交叉編譯我自己的應用程序?

我假設我錯過了一個步驟,應該在預構建的交叉編譯器上進行某種安裝/配置,但信息很少。我呼籲你,開源神,指引我穿越這個黑暗和暴風雨的大海。

回答

1

對於後人來說,android開發工具包中包含的預構建工具似乎只能構建內核,不包含libc或其他庫頭文件。 (NDK工具是'不同的',而且構建環境更加不同,因爲它有它自己的libc版本 - 仿生。這個構建環境可能已經能夠構建我想要的,但是我不得不使用Androidy makefile文件等)

我最後不得不獲取代碼的Sourcery 臂無-Linux的gnueabi(必須獲得Linux的gnueabi一個有需要的Linux系統的頭文件),並且一切後,在合理地順利那。