2012-07-16 111 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系统的头文件),并且一切后,在合理地顺利那。