我已經成功地使用的makefile構建Android SOS(爲「官方」 NDK生成過程是真正可怕的)
你只需要使用的工具鏈文件夾的正確編譯工具在 ANDROID_NDK文件夾(如C:/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/)。並將include路徑添加到/ sources/cxx-stl /中相應的包含文件以及toolchain lib文件夾中的libs。
這是我的makefile是什麼樣子:
ifndef $(NDK_PLATFORM)
NDK_PLATFORM = android-19
endif
ifndef $(GCC_VERSION)
GCC_VERSION = 4.9
endif
ifndef $(GCC_TARGET)
GCC_TARGET=arm-linux-androideabi
endif
ifndef $(ARCH)
ARCH=arch-arm
endif
SYS := $(shell gcc -dumpmachine)
ifndef $(TOOLS_PLATFORM)
ifneq (, $(findstring x86_64-apple-darwin, $(SYS)))
TOOLS_PLATFORM=darwin-x86_64
else
ifneq (, $(findstring x86_64-redhat-linux, $(SYS)))
TOOLS_PLATFORM=linux-x86_64
endif
TOOLS_PLATFORM=windows-x86_64
endif
endif
ifndef $(ANDROID_PLATFORM)
ANDROID_PLATFORM=armeabi-v7a
endif
TOOLCHAIN=$(GCC_TARGET)-$(GCC_VERSION)
CC_EXECUTABLE=$(GCC_TARGET)-gcc
CPP_EXECUTABLE=$(GCC_TARGET)-g++
SYS_ROOT=$(ANDROID_NDK)/platforms/$(NDK_PLATFORM)/$(ARCH)
PATH_LINK=$(SYS_ROOT)/usr/lib
TOOLCHAIN_BIN_FOLDER=$(ANDROID_NDK)/toolchains/$(TOOLCHAIN)/prebuilt/$(TOOLS_PLATFORM)/bin
TOOLCHAIN_LIB_FOLDER=$(ANDROID_NDK)/toolchains/$(TOOLCHAIN)/prebuilt/$(TOOLS_PLATFORM)/lib
STDC_FOLDER=$(ANDROID_NDK)/sources/cxx-stl/gnu-libstdc++/$(GCC_VERSION)
CC="$(TOOLCHAIN_BIN_FOLDER)/$(CPP_EXECUTABLE)"
NDK_INCLUDE_PATHS = -I "$(SYS_ROOT)/usr/include"
NDK_INCLUDE_PATHS += -I "$(STDC_FOLDER)/include"
NDK_INCLUDE_PATHS += -I "$(STDC_FOLDER)/libs/$(ANDROID_PLATFORM)/include"
NDK_INCLUDE_PATHS += -I "$(STDC_FOLDER)/include/backward"
NDK_INCLUDE_PATHS += -I "$(TOOLCHAIN_LIB_FOLDER)/gcc/$(GCC_TARGET)/$(GCC_VERSION)/include"
NDK_LIB_PATHS = -Wl,-L"$(PATH_LINK)"
NDK_LIB_PATHS += -Wl,-L"$(TOOLCHAIN_LIB_FOLDER)/gcc/$(GCC_TARGET)/$(GCC_VERSION)/armv7-a"
NDK_LIB_PATHS += -Wl,-L"$(STDC_FOLDER)/libs/$(ANDROID_PLATFORM)/thumb"
DEFS=-DANDROID -DDISABLE_OFURL -DTARGET_ANDROID -DBOOST_SYSTEM_NO_DEPRECATED
COPTS = -Werror --sysroot="$(SYS_ROOT)" -gdwarf-2 -Wall -fno-strict-aliasing -mthumb -fno-omit-frame-pointer -fexceptions -mfloat-abi=softfp -fstack-protector -fpic -fno-short-enums -frtti -std=c++1y -x c++
LDOPTS = -Wl,-rpath-link="$(PATH_LINK)" -Wl,--no-undefined --sysroot="$(SYS_ROOT)" -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack
ifeq ($(MODE),DEBUG)
COPTS += -O0 -g3 -D_DEBUG -DDEBUG
else
COPTS += -O3 -s -DNDEBUG
LDOPTS += -O3 -s
endif
除此之外,你的makefile應該能正常運行