Cách yêu cầu Android NDK sử dụng một chuỗi công cụ khác

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

Tôi đã tải xuống một toolchain tùy chỉnh ( linaro ) để xây dựng các ứng dụng Android dựa trên ARM. Làm thế nào để tôi nói cho NDK sử dụng nó? Tôi có thể xác định hoặc thiết lập một cái gì đó trong Android.mk và Application.mk mà sẽ cho phép tôi làm điều đó? Có cách nào khác không?

1 Comments
corbin 08/03/2012
Bạn đã làm điều này trên Ubuntu? Bạn đã cài đặt toolchain như thế nào?

3 Answers


Peter M 01/03/2013.

Như câu trả lời khác đề cập đến, các thanh công cụ được phát hiện bởi hệ thống makefile của ndk-build trong $(NDK_ROOT)/toolchains/ và bạn có thể phản chiếu các ý tưởng mà bạn thấy ở đó. Nhưng có một vài khái niệm bổ sung để hỗ trợ nền tảng mục tiêu không phải Android thú vị mặc dù chúng có thể sớm lỗi thời khi ndk-build bắt đầu hỗ trợ một cách rõ ràng các nền tảng khác, chẳng hạn như mingw nhắm mục tiêu win32 (hoặc trình biên dịch gcc khác nhắm mục tiêu 'ol linux đơn giản) .

Trong config.mk :

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

Đây là một định nghĩa quan trọng, bởi vì bạn có thể sử dụng tên này trong Application.mk của bạn để xây dựng bằng cách sử dụng chuỗi công cụ cho một ABI cụ thể. Một trong những lợi ích của việc làm hỏng việc sử dụng định nghĩa này, là ndk-build có thể đồng thời xây dựng cho nhiều ABI. Nó always giả định rằng nền tảng là Android, nhưng nếu bạn muốn nhắm mục tiêu win32 bằng cách sử dụng một chuỗi công cụ dựa trên mingw, bạn có thể xác định một "ABI" như x86-win32 , và sau đó sử dụng ABI này trong Application.mk của bạn để chọn nó như là một bổ sung nhắm mục tiêu qua APP_ABI:= x86-win32 Sau đó, trong tệp Android.mk của bạn, bạn có thể sử dụng định nghĩa TARGET_ARCH_ABI để chọn các nguồn cụ thể win32 và bao gồm các đường dẫn, ví dụ:

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

Phần cuối cùng là trong setup.mk cho toolchain của bạn, nó có thể không đủ để xem xét các toolchains khác như các ví dụ, bởi vì những gì setup.mk cho một toolchain cụ thể really là ghi đè lên các thiết lập build trong default-build-commands.mk , vì vậy những gì bạn muốn làm là kiểm tra tệp đó và xác định lại mọi thứ trong đó mà bạn không thích.

Theo ví dụ trước, mingw không hỗ trợ cờ noexec trong các tệp nhị phân và bạn có thể loại bỏ tính năng này bằng cách thêm các dòng sau vào setup.mk của bạn:

# 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! 

Đây chỉ là một ví dụ về nhiều tính năng trong default-build-commands.mk có thể cần phải được ghi đè và tất nhiên điều quan trọng là cung cấp TOOLCHAIN_NAME để có thể chọn chuỗi công cụ thông qua biến NDK_TOOLCHAIN bên trong tệp Application.mk của bạn với phương pháp ABI tôi đã đề cập ở trên.


Ian Ni-Lewis 12/09/2013.

Hệ thống makefile NDK khá mở rộng và bạn thực sự có thể định nghĩa một chuỗi công cụ khác. Bạn sẽ cần một số hiểu biết về cách Thực hiện công việc.

Toolchains được phát hiện và khởi tạo trong dòng build/core/init.mk 261 (trong NDKr6, dòng # có thể thay đổi trong các phiên bản sau). Mã khởi tạo tìm các tệp có tên config.mk dưới $(NDK_ROOT)/toolchains/* . Vì vậy, bạn sẽ cần phải thêm chuỗi công cụ của bạn trong thư mục con dưới thư mục công cụ NDK và thêm một config.mksetup.mk vào thư mục con đó. Xem toolchains/x86-4.4.3toolchains/arm-linux-androideabi-4.4.3 để xem ví dụ. Bạn sẽ có thể cắt và dán các công cụ ARM config.mksetup.mk nếu toolchain của bạn có một layout chuẩn.

Khi bạn đã xác định một chuỗi công cụ trong thư mục toolchain, bạn có thể chuyển đổi nó bằng cách đặt biến NDK_TOOLCHAIN bên trong tệp Application.mk của bạn.


lily 31/07/2017.

, bạn chỉ có thể thêm "NDK_TOOLCHAIN_VERSION = 4.9" vào trong ứng dụng của bạn


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