Kuinka kertoa, että Android NDK käyttää eri työkalukanavaa

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

Olen ladannut muokatun työkalupaketin ( linaro ) ARM-pohjaisten Android-sovellusten rakentamiseen. Kuinka kerron NDK käyttää sitä? Voinko määrittää tai asettaa jotain Android.mk: ssä ja Application.mk: ssa, jotta voisin tehdä sen? Onko olemassa toinen tapa?

1 Comments
corbin 03/08/2012
Teitkö tämän Ubuntussa? Miten asennat työkalupaketin?

3 Answers


Peter M 03/01/2013.

Kuten muissakin vastauksissa mainitaan, työkaluketjut löytyvät ndk-build -desfile-järjestelmästä $(NDK_ROOT)/toolchains/ ja voit peilata siellä $(NDK_ROOT)/toolchains/ ideoita. Mutta on olemassa muutamia lisäkäsitteitä, jotka tukevat muita kuin Android-tavoitealustoja, jotka ovat mielenkiintoisia, vaikka ne ovat pian vanhentuneita. Ndk-build alkaa tukemaan muita alustoja, kuten mingw targeting win32 (tai muita gcc-kääntäjiä, jotka tavoittelevat pelkkää ol linuxia) .

config.mk :

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

Tämä on tärkeä määritelmä, koska voit käyttää tätä nimeä sovelluksessasi Application.mk rakentaa käyttämällä tietyn ABI: n työkaluketjua. Yksi eduista tämän määritelmän käytön vääristämisestä on se, että ndk-build voi rakentaa samanaikaisesti useita ABI: iä. Se olettaa always , että foorumi on Android, mutta jos haluat kohdistaa win32-sovelluksen mingw-pohjaisen työkalupainikkeen avulla, voit määrittää "ABI" x86-win32 : ksi ja käyttää tätä ABI: tä Application.mk : ssä valitaksesi sen lisäosaksi kohde osoitteessa APP_ABI:= x86-win32 Sitten Android.mk tiedostoillasi voit käyttää TARGET_ARCH_ABI määritelmää valitaksesi Win32-tietolähteitä ja sisältää polut esimerkiksi:

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

Viimeinen pala on, että setup.mk työkalupakkasi kohdalla saattaa olla riittämätön tarkastella muita työkalupaketteja esimerkkeinä, koska mitä setup.mk tietylle työkalukanavalle really on, ohittaa rakentaa asetuksia default-build-commands.mk , joten mitä haluat tehdä on tarkastaa, että tiedosto ja määritellä uudelleen asiat, joita et pidä.

Edellisen esimerkin jälkeen mingw ei tue noexec-lippua binäärissä, ja voit poistaa tämän ominaisuuden lisäämällä seuraavat rivit 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! 

Tämä on vain yksi esimerkki monista ominaisuuksista, jotka ovat default-build-commands.mk joita saatetaan joutua TOOLCHAIN_NAME , ja tietenkin on tärkeää tarjota TOOLCHAIN_NAME niin, että TOOLCHAIN_NAME voidaan valita käyttämällä Application.mk tiedoston sisältävää NDK_TOOLCHAIN muuttujaa edellä mainittuun ABI-metodologiaan.


Ian Ni-Lewis 09/12/2013.

NDK makefile -järjestelmä on varsin laajennettavissa ja voit itse määritellä toisen työkaluketjun. Tarvitset jonkinlaisen käsityksen siitä, miten Tee töitä.

Toolchains löytyvät ja alustetaan build/core/init.mk rivillä 261 (NDKr6, rivi # voi muuttua tulevissa versioissa). config.mk etsii tiedostoja nimeltä config.mk alle $(NDK_ROOT)/toolchains/* . Joten sinun on lisättävä työkalukansi NDK työkalupalkkihakemiston alla olevaan alihakemistoon ja lisättävä config.mk ja setup.mk tähän alihakemistoon. Tarkastele toolchains/x86-4.4.3 ja toolchains/arm-linux-androideabi-4.4.3 esimerkkeihin. Sinun pitäisi pystyä leikkaamaan ja liittämään ARM-työkalupalkki config.mk ja setup.mk jos työkalupaneelisi on vakiomuotoinen.

Kun olet määritellyt työkalupaketin työkalupalkin hakemistossa, voit siirtyä siihen asettamalla NDK_TOOLCHAIN muuttuja Application.mk tiedostosi sisällä.


lily 07/31/2017.

hyvin, voit lisätä vain "NDK_TOOLCHAIN_VERSION = 4.9" Application.mk-sovellukseen

Related questions

Hot questions

Language

Popular Tags