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

时间:2012-07-16 23:33:36

标签: gcc cross-compiling

首先,一些背景知识:我正在尝试在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开发工具包中提供的预构建交叉编译器没有搜索正确的路径。

我通过创建自己的.c文件来确认这一点,该文件包含并尝试使用它编译 arm-eabi-gcc blah.c -o blah 并且遇到了相同的结果(无法找到有问题的头文件)

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

  • 忽略不存在的目录 “在/ usr /本地/谷歌/家庭/机器人/ cupcake_rel_root的/ usr /本地/包括”
  • 忽略不存在的目录“/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开发工具包的.bin文件(这看起来更像是从.bin文件中提取自己;我不记得它做了什么)

所以,有几个问题:

  1. 如何通过将交叉编译工具的bin放入$ PATH(就像操作方法文档所说的那样)来完成其他所有操作(即android,x-loader,u-boot,内核)。我假设它(make menuconfig?)在根据可执行文件的位置修复包含路径方面做了一些魔术,但是......
  2. 为什么busybox的工作方式不一样,因为它似乎是用类似的基础架构构建的?
  3. 如何制作,以便我可以交叉编译自己的应用程序?
  4. 我认为我错过了一个步骤,应该在预构建的交叉编译器上进行某种安装/配置,但信息非常少。我呼吁你,开源众神,指出我穿过这个黑暗和暴风雨的海洋。

1 个答案:

答案 0 :(得分:1)

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

我最终得到Code Sourcery arm-none-linux-gnueabi (必须得到linux-gnueabi才能拥有所需的linux系统头文件),之后一切运行得相当顺利