我试图了解独立工具链的含义。 以下是我的发现。 一个工具链,可以使用所有配置,即正确路径中的系统头和库。对于Android,它还会在工具链可以查找的路径中包含API标头。为何“独立”这个词?这可能与常规工具链的不同之处在于R T需要配置并准备好供Android使用,同时提供sysroot和libc头路径等。 请评论。
嗯,我正在为android编译,一个进程运行了一个名为make-standalone-toolchain.sh的脚本,创建了一个独立的工具链。我正在通过这个脚本来了解这是做什么的。不太擅长shell脚本。但是做了一些事情。 “”生成包含工作sysroot的自定义Android工具链安装。结果可以更容易地用作独立的交叉编译器,例如,运行configure和make scripts。“ - tool链接ndk-dir package-dir系统平台变量设置Compute source sysroot SRC_SYSROOT =“$ NDK_DIR / platforms / $ PLATFORM arch- $ ARCH”复制sysroot头文件和库... libstdc ++头文件库...预构建的二进制文件.all到一个临时文件夹然后从Tmp目录复制到安装 dir创建一个tar即一个包文件来添加tmpdir想要知道这里到底发生了什么,或者链接或建议在哪里看。但是当然不想阅读非常精细的手册。 〜
答案 0 :(得分:7)
此博文可能会回答您的问题:
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开发指南”中,有一个“独立工具链”部分,它描述了我们需要的东西....答案 1 :(得分:0)
首先,此处提供了适用于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 ++本机代码并为目标计算机创建兼容的可执行文件。
例如,这是我用来为certaion Android设备创建独立工具链的命令:
./make-standalone-toolchain.shj --arch=arm --platform=android-21 --install-dir=<dest-dir> --toolchain=arm-linux-androideabi-4.9