【问题标题】:What is the standalone toolchain?什么是独立工具链?
【发布时间】:2012-10-26 04:19:18
【问题描述】:

我试图了解独立工具链的含义。 以下是我的发现。 一个工具链,可以与正确路径中的系统头文件和库的所有配置一起使用。对于 Android,它还将在工具链可以查找的路径中包含 API 标头。为什么叫“独立”?这可能与常规工具链不同,因为 R T 需要配置并准备好用于 android 使用给定的 sysroot 和 libc 标头路径等。 请发表评论。

嗯,我正在为 android 编译,一个进程正在运行一个名为 make-standalone-toolchain.sh 的脚本,创建了一个独立的工具链。我正在通过这个脚本来了解它在做什么。不太擅长shell脚本。但是弄出来了一些东西。 ""生成一个定制的 Android 工具链安装,其中包括一个工作的 sysroot。结果是可以更容易地用作独立的交叉编译器,例如运行配置和制作脚本。” --toolchain arch ndk-dir package-dir 系统平台变量已设置 Compute source sysroot SRC_SYSROOT="$NDK_DIR/platforms/$PLATFORM arch-$ARCH" 复制 sysroot 头文件和库... libstdc++ 头文件和库... 预构建的 binaries.all 到一个临时文件夹,然后从 Tmp 目录复制安装 dir 创建一个 tar 即一个包文件来添加 tmpdir 想知道这里到底发生了什么或者一个链接或建议在哪里看。但当然不想阅读非常详尽的手册。 ~

【问题讨论】:

  • 请提供一些信息,说明您尝试了什么,您的目标是什么,目前这个问题似乎很广泛。
  • 这个答案有一个很好的例子来说明如何使用它:stackoverflow.com/a/16784582/895245

标签: android toolchain android-ndk-r5


【解决方案1】:

这篇博文可能会回答你的问题:

http://clseto.mysinablog.com/index.php?op=ViewArticle&articleId=3480794

推荐一种在 Android 上构建原生 C/C++ 程序的方法:在脚本 (Android.mk) 中列出源文件并运行“ndk-build”。如果您正在编写新程序,这可能不是问题,但如果您已经有一个可以在 Linux 上很好地构建您的程序的工作构建脚本(如那些开源软件),那么将您的脚本迁移到 Android.mk 将是一件令人头疼的事情.在这种情况下,您只需要一个 C/C++ 交叉编译器,然后将脚本中的变量(例如 CC、CXX、AR、AS、RANLIB...)替换为“arm-linux-androideabi-gcc”之类的东西, 'arm-linux-androideabi-g++', ...

Fortunatley,在“Android NDK 开发指南”中,有一个“独立工具链”部分,它只是描述了我们需要什么......

【讨论】:

【解决方案2】:

首先,Android 中独立工具链的最佳指南在这里:https://developer.android.com/ndk/guides/standalone_toolchain。 我已经多次针对不同的设备和平台使用它。

您需要下载 NDK,然后运行带有一些参数的脚本“make-standalone-toolchain.sh”(如上面的链接中所述),这些参数将确定您的应用程序的 API 级别、设备的架构等.

脚本的输出将是一个目录,您可以将其用作工具链,以便交叉编译原生 C/C++ 代码以在 Android 设备上运行。您需要在 Makefile 中放入工具链目录的路径,并为其中的二进制文件添加架构后缀(例如“arm-eabi-”)。比如:

CROSS_COMPILE = /path-to-toolchain-dir/bin/arm-eabi-

你的工具链目录中应该有类似“/path-to-toolchain-dir/bin/arm-eabi-gcc”的文件。

无论如何,这将告诉 Makefile 使用您的工具链的二进制文件来编译 C/C++ 本机代码并为您的目标机器创建兼容的可执行文件。

例如,这是我用来为特定 Android 设备创建独立工具链的命令:

./make-standalone-toolchain.shj --arch=arm --platform=android-21 --install-dir=<dest-dir> --toolchain=arm-linux-androideabi-4.9

【讨论】:

    猜你喜欢
    • 2015-05-30
    • 2018-10-22
    • 2013-10-09
    • 2017-08-12
    • 2020-01-14
    • 2014-06-27
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多