2014-03-29 59 views
5

我可以使用arm-linux-gnueabi-*工具链编译使用我的android设备的文件(例如C或C++源代码)吗?arm-linux-gnueabi工具链与arm-linux-androideabi工具链。

我的问题似乎有点傻,但我会得到相同的结果与arm-linux-androideabi-*编译工具链?

+1

你可以使用任何ARM的工具链为ARM架构会为你工作。(只记得32位/ 64位的差) –

+0

非常感谢你! – bolzano

回答

12

编译可能不仅仅意味着将源代码转换为二进制文件。像GCC这样的编译器也提供了某些库,在这种情况下,用于处理硬件无法处理的内容。当编译器成为工具链时,它还提供了由编程语言标准化的运行时库,类似于目标系统中提供的库。在arm-linux-gnueabi-的情况下,可能是libcarm-linux-androideabi-bionic

可以生产兼容的目标文件由不同的编译器使用,这就是elf是。

您可以生成静态可执行文件,它可以在尺寸强大,他们应该在任何匹配的硬件/内核工作,因为在这种情况下,工具链瞄准这一点。

但是,如果您生成动态可执行文件,那些文件只能在支持其相关性的系统上运行。因为一个简单的“hello world”应用程序不是由arm-linux-gnueabi-构建的静态应用程序,因此它不能在Android系统上工作,因为它提供仿生功能,而不是libc。