3

首先,一些背景知识:我正在尝试在 Beagleboard-xM 上为 Android 编写驱动程序和应用程序。

我已经下载了他们的 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 文件确认了这一点,该文件包含并尝试使用 arm-eabi-gcc blah.c -o blah进行编译, 并得到了相同的结果(无法找到有问题的头文件)

'arm-eabi-gcc -print-prog-name=cc1' -v给了我这个:

  • 忽略不存在的目录“/usr/local/google/home/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/include-fixed”
  • 忽略不存在的目录“/usr/local/lib/../arm-eabi/include”
  • 忽略不存在的目录“/usr/local/google/home/android/cupcake_rel_root/usr/include”

在我全新安装的 ubuntu 10.04 中,这些路径都不存在。我使用的交叉编译器位于/usr/TI-Android/prebuilt/linux-86/toolchain/arm-eabi-4.4.3/。除了运行作为 android 开发工具包的 bit .bin 文件之外,我什么也没做(这看起来更像是简单地从 .bin 文件中提取自身;我不记得它做了其他任何事情)

所以,有几个问题:

  1. 到底是如何通过将交叉编译工具的 bin 放入 $PATH 来构建其他所有东西(即 android、x-loader、u-boot、内核)的(就像操作文档所说的那样)。我认为它(make menuconfig?)在根据可执行文件的位置修复包含路径方面有一些魔力,但是......
  2. 为什么busybox的工作方式不一样,因为它似乎是用相似的基础设施构建的?
  3. 我该如何做才能交叉编译我自己的应用程序?

我假设我错过了一步,应该在预构建的交叉编译器上进行某种安装/配置,但信息非常少。我呼吁你们,开源之神,为我指明穿越这片黑暗和暴风雨的大海的道路。

4

1 回答 1

1

对于后人来说,似乎android开发工具包中包含的预构建工具仅足以构建内核,并且不包含libc或其他库头文件。(NDK 工具是“不同的”,构建环境更加不同,因为它有自己的 libc--bionic 版本。那个构建环境可能能够构建我想要的东西,但我不得不用 Androidy生成文件等)

我最终不得不获得 Code Sourcery arm-none-linux-gnueabi(必须获得 linux-gnueabi 一个以获得所需的 linux 系统头文件),之后一切都运行得相当顺利。

于 2012-07-17T17:01:21.447 回答