如何告诉Android NDK使用不同的工具链

Phonon 09/02/2017. 3 answers, 18.326 views
android android android-ndk android-ndk toolchain

我已经下载了一个自定义工具链( linaro )来构建基于ARM的Android应用程序。 我如何告诉NDK使用它? 我可以在Android.mk和Application.mk中定义或设置一些允许我这样做的东西吗? 有另一种方法吗?

1 Comments
corbin 03/08/2012
你在Ubuntu上做过这些吗? 你是如何安装工具链的?

3 Answers


Peter M 03/01/2013.

正如其他答案所提到的,工具链是通过$(NDK_ROOT)/toolchains/的ndk-build makefile系统发现的,您可以在那里看到您看到的想法。 但是有一些额外的概念可以支持非Android目标平台,虽然它们可能很快就会过时,因为ndk-build开始明确支持其他平台,比如针对win32的mingw(或其他针对纯Linux的gcc编译器) 。

config.mk

TOOLCHAIN_ABIS := (list of ABIs that the toolchain supports) 

这是一个重要的定义,因为您可以在您的Application.mk中使用此名称来构建使用特定ABI的工具链。 破坏这个定义的使用的好处之一是,ndk-build可以同时为多个ABI构建。 它always假设平台是Android,但如果你想使用基于mingw的工具链来定位win32,你可以定义一个“ABI”作为x86-win32 ,然后在你的Application.mk使用这个ABI来选择它作为附加目标通过APP_ABI:= x86-win32然后在你的Android.mk文件中,你可以使用TARGET_ARCH_ABI定义来选择win32特定的源并包含路径,例如:

ifeq ($(TARGET_ARCH_ABI),x86-win32)
  LOCAL_SRC_FILES += my_win32_file.c
  LOCAL_CFLAGS += -DSOME_WIN32_SPECIFIC
endif 

最后一部分是在你的工具链的setup.mk中,它可能不足以查看其他工具链作为示例,因为特定工具链的setup.mk really会覆盖default-build-commands.mk构建设置,所以你想要做的就是检查这个文件,并重新定义你不喜欢的东西。

在前面的示例之后,mingw不支持二进制文件中的noexec标志,并且可以通过在setup.mk添加以下行来摆脱此功能:

# These flags are used to enforce the NX (no execute) security feature in the
# generated machine code. This adds a special section to the generated shared
# libraries that instruct the Linux kernel to disable code execution from
# the stack and the heap.
TARGET_NO_EXECUTE_CFLAGS  := # our platform doesn't support this flag!
TARGET_NO_EXECUTE_LDFLAGS := # our platform doesn't support this flag!

# These flags disable the above security feature
TARGET_DISABLE_NO_EXECUTE_CFLAGS  :=  # our platform doesn't support this flag!
TARGET_DISABLE_NO_EXECUTE_LDFLAGS :=  # our platform doesn't support this flag! 

这只是default-build-commands.mk中可能需要重写的许多功能的一个示例,当然,重要的是提供TOOLCHAIN_NAME以便可以通过Application.mk文件中的NDK_TOOLCHAIN变量选择工具链到我上面提到的ABI方法。


Ian Ni-Lewis 09/12/2013.

NDK makefile系统是非常可扩展的,你可以确定一个不同的工具链。 您需要了解Make的工作原理。

工具链在build/core/init.mk第261行中被发现和初始化(在NDKr6中,行号在未来版本中可能会更改)。 初始化代码在$(NDK_ROOT)/toolchains/*下查找名为config.mk文件。 因此,您需要将工具链添加到NDK工具链目录下的子目录中,并将config.mksetup.mk添加到该子目录。 以toolchains/x86-4.4.3toolchains/arm-linux-androideabi-4.4.3为例。 如果您的工具链具有标准布局,您应该能够剪切并粘贴ARM工具链config.mksetup.mk

一旦在工具链目录中定义了工具链,就可以通过在Application.mk文件中设置NDK_TOOLCHAIN变量来切换工具链。


lily 07/31/2017.

那么,你可以简单地在你的Application.mk中添加“NDK_TOOLCHAIN_VERSION = 4.9”


HighResolutionMusic.com - Download Hi-Res Songs

1 (G)I-DLE

POP/STARS flac

(G)I-DLE. 2018. Writer: Riot Music Team;Harloe.
2 Ariana Grande

​Thank U, Next flac

Ariana Grande. 2018. Writer: Crazy Mike;Scootie;Victoria Monét;Tayla Parx;TBHits;Ariana Grande.
3 Clean Bandit

Baby flac

Clean Bandit. 2018. Writer: Jack Patterson;Kamille;Jason Evigan;Matthew Knott;Marina;Luis Fonsi.
4 Imagine Dragons

Bad Liar flac

Imagine Dragons. 2018. Writer: Jorgen Odegard;Daniel Platzman;Ben McKee;Wayne Sermon;Aja Volkman;Dan Reynolds.
5 Halsey

Without Me flac

Halsey. 2018. Writer: Halsey;Delacey;Louis Bell;Amy Allen;Justin Timberlake;Timbaland;Scott Storch.
6 BTS

Waste It On Me flac

BTS. 2018. Writer: Steve Aoki;Jeff Halavacs;Ryan Ogren;Michael Gazzo;Nate Cyphert;Sean Foreman;RM.
7 Nicki Minaj

No Candle No Light flac

Nicki Minaj. 2018. Writer: Denisia “Blu June” Andrews;Kathryn Ostenberg;Brittany "Chi" Coney;Brian Lee;TJ Routon;Tushar Apte;ZAYN;Nicki Minaj.
8 Backstreet Boys

Chances flac

Backstreet Boys. 2018.
9 BlackPink

Kiss And Make Up flac

BlackPink. 2018. Writer: Soke;Kny Factory;Billboard;Chelcee Grimes;Teddy Park;Marc Vincent;Dua Lipa.
10 Little Mix

The Cure flac

Little Mix. 2018. Writer: Pete Kelleher;Camille Purcell;Tom Barnes;Ben Kohn.
11 Fitz And The Tantrums

HandClap flac

Fitz And The Tantrums. 2017. Writer: Fitz And The Tantrums;Eric Frederic;Sam Hollander.
12 Diplo

Close To Me flac

Diplo. 2018. Writer: Ellie Goulding;Savan Kotecha;Peter Svensson;Ilya;Swae Lee;Diplo.
13 The Chainsmokers

Beach House flac

The Chainsmokers. 2018. Writer: Andrew Taggart.
14 Bradley Cooper

Always Remember Us This Way flac

Bradley Cooper. 2018. Writer: Lady Gaga;Dave Cobb.
15 Kelly Clarkson

Never Enough flac

Kelly Clarkson. 2018. Writer: Benj Pasek;Justin Paul.
16 Lady Gaga

I'll Never Love Again flac

Lady Gaga. 2018. Writer: Benjamin Rice;Lady Gaga.
17 Frida Sundemo

Apologize flac

Frida Sundemo. 2018.
18 Little Mix

Woman Like Me flac

Little Mix. 2018. Writer: Nicki Minaj;Steve Mac;Ed Sheeran;Jess Glynne.
19 Imagine Dragons

Machine flac

Imagine Dragons. 2018. Writer: Wayne Sermon;Daniel Platzman;Dan Reynolds;Ben McKee;Alex Da Kid.
20 Billie Eilish

When The Party's Over flac

Billie Eilish. 2018. Writer: Billie Eilish;FINNEAS.

Related questions

Hot questions

Language

Popular Tags