【问题标题】:arm-linux-gnueabi toolchain vs arm-linux-androideabi toolchain.arm-linux-gnueabi 工具链与 arm-linux-androideabi 工具链。
【发布时间】:2014-05-09 02:43:42
【问题描述】:

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

我的问题可能看起来有点傻,但我会得到与使用arm-linux-androideabi-* 工具链编译相同的结果吗?

【问题讨论】:

  • 您可以使用任何 arm-toolchain 来实现 arm-architecture 适合您。(请记住 32 位/64 位的区别)

标签: linux compilation android-ndk toolchain


【解决方案1】:

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

您可以生成兼容的目标文件以供不同的编译器使用,这就是elf 的用途。

您可以生成大小可能很大的静态可执行文件,并且它们应该可以在任何匹配的硬件/内核上运行,因为在这种情况下,工具链的目标是。

但是,如果您生成动态可执行文件,这些可执行文件只能在支持其依赖项的系统上运行。因此,不是由arm-linux-gnueabi- 静态构建的简单“hello world”应用程序将无法在 Android 系统上运行,因为它提供的是仿生,而不是 libc。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 2023-03-02
    • 2023-03-23
    • 1970-01-01
    • 2016-09-30
    相关资源
    最近更新 更多