首先,一些背景知识:我正在尝试在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 给了我这个:
在我全新安装的ubuntu 10.04中,这些路径都不存在。我使用的交叉编译器是 /usr/TI-Android/prebuilt/linux-86/toolchain/arm-eabi-4.4.3 / 。我没有做任何事情,除了运行android开发工具包的.bin文件(这看起来更像是从.bin文件中提取自己;我不记得它做了什么)
所以,有几个问题:
我认为我错过了一个步骤,应该在预构建的交叉编译器上进行某种安装/配置,但信息非常少。我呼吁你,开源众神,指出我穿过这个黑暗和暴风雨的海洋。
答案 0 :(得分:1)
对于后人来说,似乎android开发工具包中包含的预构建工具仅足以构建内核,并且不包含libc或其他库头文件。 (NDK工具“不同”,构建环境更加不同,因为它有自己的libc版本 - 仿生。这个构建环境可能已经能够构建我想要的东西,但我不得不捣乱Androidy makefile等。)
我最终得到Code Sourcery arm-none-linux-gnueabi (必须得到linux-gnueabi才能拥有所需的linux系统头文件),之后一切运行得相当顺利