Hvordan fortelle Android NDK å bruke et annet verktøykjede

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

Jeg har lastet ned en egendefinert toolchain ( linaro ) for å bygge ARM-baserte Android-apper. Hvordan forteller jeg at NDK skal bruke den? Kan jeg definere eller sette noe i Android.mk og Application.mk som vil tillate meg å gjøre det? Er det en annen måte?

1 Comments
corbin 03/08/2012
Har du gjort dette på Ubuntu? Hvordan installerte du verktøykjeden?

3 Answers


Peter M 03/01/2013.

Som det andre svaret nevner, blir verktøykjeder oppdaget av ndk-build makefile-systemet i $(NDK_ROOT)/toolchains/ og du kan speile ideer du ser der. Men det er noen ekstra konsepter for å støtte ikke-Android-målplattformer som er interessante, selv om de kanskje snart blir utdaterte, da ndk-build begynner å eksplisitt støtte andre plattformer, for eksempel mingw rettet mot win32 (eller andre gcc-kompilatorer rettet mot vanlig 'ol Linux) .

I config.mk :

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

Dette er en viktig definisjon, fordi du kan bruke dette navnet i Application.mk for å bygge med verktøykjeden for en bestemt ABI. En av fordelene ved å ødelegge bruken av denne definisjonen er at ndk-build kan bygge for flere ABIer samtidig. Det går always fra at plattformen er Android, men hvis du vil målrette mot win32 ved hjelp av et mingw-basert verktøy, kan du definere en "ABI" som x86-win32 , og deretter bruke denne ABI i Application.mk å velge den som en ekstra mål via APP_ABI:= x86-win32 Så i Android.mk filene dine kan du bruke definisjonen TARGET_ARCH_ABI til å velge win32-spesifikke kilder og inkludere baner, for eksempel:

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

Det endelige stykket er det i setup.mk for verktøylinjen, kan det være utilstrekkelig å se på andre verktøylinjer som eksempler, fordi hva setup.mk for en bestemt verktøylinje really gjør, er tilsidesatt setup.mk i standard-build-commands.mk, så hva du vil gjøre er å inspisere den filen og omdefinere ting i det du ikke liker.

Etter det forrige eksempelet støtter mingw ikke noexec-flagget i binærene, og du kan bli kvitt denne funksjonen ved å legge til følgende linjer i 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! 

Dette er bare ett eksempel på de mange funksjonene i default-build-commands.mk som kanskje må overstyres, og selvfølgelig er det viktig å gi TOOLCHAIN_NAME slik at verktøylinjen kan velges via NDK_TOOLCHAIN variabelen i Application.mk fil i tillegg til ABI-metoden jeg nevner ovenfor.


Ian Ni-Lewis 09/12/2013.

NDK makefile-systemet er ganske utvidbart, og du kan faktisk definere en annen verktøykjede. Du trenger litt forståelse av hvordan Make fungerer.

Verktøykjeder oppdages og initialiseres i build/core/init.mk linje 261 (i NDKr6 kan linjen # endres i fremtidige versjoner). Initialiseringskoden ser etter filer kalt config.mk under $(NDK_ROOT)/toolchains/* . Så du må legge til verktøylinjen i en underkatalog under NDK-verktøylinjekatalogen, og legg til en config.mk og setup.mk i den underkatalogen. Se på toolchains/x86-4.4.3 og toolchains/arm-linux-androideabi-4.4.3 for eksempler. Du bør kunne klippe og lime inn ARM toolchain config.mk og setup.mk hvis verktøylinjen har et standardoppsett.

Når du har definert en verktøylinje i verktøylinjekatalogen, kan du bytte til den ved å angi variabelen NDK_TOOLCHAIN i filen Application.mk .


lily 07/31/2017.

Vel, du kan bare legge til "NDK_TOOLCHAIN_VERSION = 4.9" i Application.mk


HighResolutionMusic.com - Download Hi-Res Songs

1 The Chainsmokers

Beach House flac

The Chainsmokers. 2018. Writer: Andrew Taggart.
2 (G)I-DLE

POP/STARS flac

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

​Thank U, Next flac

Ariana Grande. 2018. Writer: Crazy Mike;Scootie;Victoria Monét;Tayla Parx;TBHits;Ariana Grande.
4 Anne-Marie

Rewrite The Stars flac

Anne-Marie. 2018. Writer: Benj Pasek;Justin Paul.
5 Clean Bandit

Baby flac

Clean Bandit. 2018. Writer: Jack Patterson;Kamille;Jason Evigan;Matthew Knott;Marina;Luis Fonsi.
6 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.
7 BlackPink

Kiss And Make Up flac

BlackPink. 2018. Writer: Soke;Kny Factory;Billboard;Chelcee Grimes;Teddy Park;Marc Vincent;Dua Lipa.
8 Imagine Dragons

Bad Liar flac

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

Waste It On Me flac

BTS. 2018. Writer: Steve Aoki;Jeff Halavacs;Ryan Ogren;Michael Gazzo;Nate Cyphert;Sean Foreman;RM.
10 Halsey

Without Me flac

Halsey. 2018. Writer: Halsey;Delacey;Louis Bell;Amy Allen;Justin Timberlake;Timbaland;Scott Storch.
11 Little Mix

Woman Like Me flac

Little Mix. 2018. Writer: Nicki Minaj;Steve Mac;Ed Sheeran;Jess Glynne.
12 Brooks

Limbo flac

Brooks. 2018.
13 Fitz And The Tantrums

HandClap flac

Fitz And The Tantrums. 2017. Writer: Fitz And The Tantrums;Eric Frederic;Sam Hollander.
14 Backstreet Boys

Chances flac

Backstreet Boys. 2018.
15 Lady Gaga

I'll Never Love Again flac

Lady Gaga. 2018. Writer: Benjamin Rice;Lady Gaga.
16 Diplo

Close To Me flac

Diplo. 2018. Writer: Ellie Goulding;Savan Kotecha;Peter Svensson;Ilya;Swae Lee;Diplo.
17 Rita Ora

Velvet Rope flac

Rita Ora. 2018.
18 Bradley Cooper

Always Remember Us This Way flac

Bradley Cooper. 2018. Writer: Lady Gaga;Dave Cobb.
19 Imagine Dragons

Machine flac

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

Speechless flac

Erika Sirola. 2018. Writer: Teemu Brunila;Stefan Dabruck;Jürgen Dohr;Guido Kramer;Dennis Bierbrodt;Chris Braide;Robin Schulz.

Related questions

Hot questions

Language

Popular Tags