交叉编译器默认包含路径设置

4
首先,一些背景信息:我正在尝试在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等操作。
我厌倦了默认构建所给出的基本shell,并想添加busybox。我尝试按照http://omappedia.org/wiki/Android_Installing_Busybox_Command_Line_Tools中的说明进行操作,但是在标准libc头文件上遇到了编译错误。
经过大量挖掘,我确定了TI Android开发工具包中提供的预构建交叉编译器没有搜索正确的路径。
我通过创建自己的.c文件,包含#include 并尝试使用arm-eabi-gcc blah.c -o blah进行编译,并得到了相同的结果(无法找到相关的头文件)。 'arm-eabi-gcc -print-prog-name=cc1' -v给出了以下结果:
  • ignoring nonexistent directory "/usr/local/google/home/android/cupcake_rel_root/usr/local/include"
  • ignoring nonexistent directory "/usr/local/lib/gcc/arm-eabi/4.4.3/include"
  • ignoring nonexistent directory "/usr/local/lib/gcc/arm-eabi/4.4.3/include-fixed"
  • ignoring nonexistent directory "/usr/local/lib/../arm-eabi/include"
  • ignoring nonexistent directory "/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开发工具包的二进制文件之外什么都没做(它似乎更像是从.bin文件中解压缩出来;我不记得它还做了其他事情)。
因此,有几个问题:
  1. 其他所有东西(如Android、X-loader、U-boot、内核)是如何通过将交叉编译工具的bin文件夹放入$PATH中构建的呢?我假设它(make menuconfig?)会根据可执行文件的位置进行一些魔法般的修复包含路径,但...
  2. 为什么Busybox不以相似的基础设施方式工作,因为它似乎是用类似的方式构建的呢?
  3. 我该如何使自己能够交叉编译我的应用程序?

我认为我错过了一些步骤,并且应该在预构建的交叉编译器上进行某种安装/配置,但信息非常有限。我向您这位开源之神求助,指引我穿越这黑暗而多风的海洋。

1个回答

2
为了后代,似乎Android开发工具包中包含的预构建工具仅足以构建内核,不包括libc或其他库头文件。(NDK工具是“不同”的,构建环境甚至更加不同,因为它有自己的libc版本 - bionic。那个构建环境也许能够构建我想要的内容,但我必须搞定Androidy makefiles等等。)
最终,我不得不获取Code Sourcery arm-none-linux-gnueabi(必须获取linux-gnueabi才能获得所需的Linux系统头文件),之后一切都相对顺利。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接