如何编译anroid控制台程序
1). 下载安装 NDK下载地址:https://developer.android.google.cn/ndk/downloads?hl=zh-cn
2). makefile模版
非常非常幸运,国内可以正常访问。
HOST_CPU_CORES:=${shell getconf _NPROCESSORS_ONLN} # MAKEFLAGS:=-s -j${HOST_CPU_CORES} #加-s参数表示 silence,即指令无回显 # NDK_DIR=/mnt/d/downloads/android-ndk-r10e NDK_DIR=/mnt/d/downloads/android-ndk-r23b NDK_BIN=$(NDK_DIR)/toolchains/llvm/prebuilt/linux-x86_64/bin NDK_VER=21 NTV_DIR=$(NDK_DIR)/sources/android/native_app_glue SRC_DIR=. TMP_DIR=$(SRC_DIR)/tmp TMP_APK=tmp.apk SGN_APK=sgn.apk OUT_APK=out.apk KEYPAIR=myKeyPair.keystore LIBARCH=arm64-v8a CPLARCH=aarch64-linux-android BIN =ndkvmsetup INCS = -I"./" LIBS = # -g3 to generate debug msg CFLAGS = XFLAGS = LDFLAGS = PLATFORM?=android CSOURCES+= main.c # 隐藏函数名 CFLAGS += -fvisibility=hidden XFLAGS += -fvisibility=hidden CCSELECT:=__GCC__ ifeq ($(CCSELECT),__GCC__) GCC_DIR =/usr CC = $(NDK_BIN)/clang XX = $(NDK_BIN)/clang++ TR = $(NDK_BIN)/llvm-strip LIBS += INCS += -I$(NTV_DIR)/ CFLAGS += -D__DEBUG__ -D${CCSELECT} -DANDROID_BUILD CFLAGS += -target aarch64-none-linux-android$(NDK_VER) CFLAGS += --sysroot $(NDK_DIR)/toolchains/llvm/prebuilt/linux-x86_64/sysroot # CFLAGS += -I$(NDK_DIR)/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/ CFLAGS += -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes -Wno-invalid-command-line-argument CFLAGS += -Wno-unused-command-line-argument -D_FORTIFY_SOURCE=2 -fpic -O2 -Wformat -Werror=format-security -Wno-zero-length-array CFLAGS += -pedantic -fPIC -Wall -Wno-format-pedantic -Wno-unused-variable -Wno-gnu-binary-literal -Wno-return-type -Wno-int-to-pointer-cast -Wno-parentheses CFLAGS += -std=gnu11 CFLAGS += -DANDROID XFLAGS += -D__DEBUG__ -D${CCSELECT} -DANDROID_BUILD XFLAGS += -target aarch64-none-linux-android$(NDK_VER) -fdata-sections -ffunction-sections -fstack-protector-strong XFLAGS += -funwind-tables -no-canonical-prefixes XFLAGS += --sysroot $(NDK_DIR)/toolchains/llvm/prebuilt/linux-x86_64/sysroot XFLAGS += -Wno-invalid-command-line-argument -Wno-unused-command-line-argument XFLAGS += -D_FORTIFY_SOURCE=2 -fno-exceptions -fno-rtti -fpic -O2 -DNDEBUG # XFLAGS += -I$(NDK_DIR)/sources/android/native_app_glue -Ijni XFLAGS += -DANDROID -Wformat -Werror=format-security LDFLAGS += -Wl,-soname,$(BIN) # -shared LDFLAGS += -latomic -target aarch64-none-linux-android$(NDK_VER) -no-canonical-prefixes LDFLAGS += -Wl,--build-id=sha1 -Wl,--no-rosegment -u ANativeActivity_onCreate -stdlib=libstdc++ -Wl,--no-undefined -Wl, LDFLAGS += -latomic -llog -landroid -lc -lm #-lEGL -lGLESv1_CM # LDFLAGS += -shared -llog -landroid -lEGL -lGLESv2 endif LDFLAGS+= # -g3 OBJEXT ?= .o AOBJS = $(ASOURCES:.S=$(OBJEXT)) # COBJS = $(CSOURCES:.c=$(OBJEXT)) COBJS_ = $(filter %.c,$(CSOURCES)) COBJS = $(COBJS_:.c=$(OBJEXT)) XOBJS_ = $(filter %.cpp,$(CSOURCES)) XOBJS = $(XOBJS_:.cpp=$(OBJEXT)) # XOBJS = $(CSOURCES:.cpp=$(OBJEXT)) OBJS = $(AOBJS) $(COBJS) $(XOBJS) all: default %.o: %.c @echo CC $< "$(CC)" -c $< -o $@ $(CFLAGS) $(INCS) %.o: %.cpp @echo XX $< "$(XX)" -c $< -o $@ $(XFLAGS) $(INCS) c: $(OBJS) echo -e '\e[1;36m linking...\e[0m' "$(XX)" -o $(BIN) $(OBJS) $(LDFLAGS) $(LIBS) echo -e '\e[1;36m stripping...\e[0m' "$(TR)" --strip-unneeded --remove-section=.symtab $(BIN) "$(TR)" $(BIN) @echo 体积: @ls -al $(BIN) default:c #do nothing clean: rm -rf *.png clear rm -f $(BIN) $(OBJS) $(clean2)转载请注明本网页链接!