ubuntu下android ndk编译环境搭建方法

Posted osnet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu下android ndk编译环境搭建方法相关的知识,希望对你有一定的参考价值。

下载ndk13

http://developer.android.com/sdk/ndk/index.html

解压

cd /home/ubuntu/ndk/
tar -xzvf   android-ndk-r13b.tgz

安装交叉编译环境

运行在arm64 cpu
安装两个,安装两个目的只是为了灵活性
第一个在目录/home/ubuntu/ndk-android-tool-chain

ubuntu@ubuntu:~/ndk/android-ndk-r13b/build/tools$ ./make-standalone-toolchain.sh  --arch=arm64 --platform=android-21 --install-dir=/home/ubuntu/ndk-android-tool-chain  --force

第二个安装在默认目录下,同ndk一个目录,没有–install-dir参数:

ubuntu@ubuntu:~/ndk/android-ndk-r13b/build/tools$ ./make-standalone-toolchain.sh  --arch=arm64 --platform=android-21   --force

设置环境变量

ubuntu@ubuntu:~/ndk-android-tool-chain/bin$ export PATH=/home/ubuntu/ndk-android-tool-chain/bin:$PATH
ubuntu@ubuntu:~/ndk-android-tool-chain/bin$ source ~/.bashrc

ubuntu@ubuntu:~/ndk/android-ndk-r13b$ export PATH=/home/ubuntu/ndk/android-ndk-r13b:$PATH
ubuntu@ubuntu:~/ndk/android-ndk-r13b$ source ~/.bashrc

测试

arch64-linux-android-gcc -v

编译

方法一,编译c程序

arm-linux-androideabi-gcc -o main main.c

方法二,创建android工程编译
创建目录jni
目录下创建文件:
Application.mk
Android.mk
hello目录
hello目录下:
main.c
Android.mk

Application.mk:

APP_ABI:=arm64-v8a
 
DEBUG := $(NDK_DEBUG)
 
ifndef NDK_DEBUG
DEBUG := 0
endif
ifeq ($(DEBUG),true)
DEBUG := 1
endif
 
ifeq ($(DEBUG),1)
APP_CFLAGS += -O0 -g
APP_OPTIM := debug
else
APP_CFLAGS += -O2
APP_OPTIM := release
endif
 
APP_STL := stlport_static
APP_CPPFLAGS += -fexceptions
APP_PLATFORM := android-21
NDK_TOOLCHAIN_VERSION := 

jni目录下Android.mk:

include $(call all-subdir-makefiles)

hello目录下Android.mk:
LOG_TO_ANDROID_LOGCAT := true

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES:= main.c

LOCAL_MODULE:=hello
LOCAL_MODULE_TAGS := optional

ifeq ($(LOG_TO_ANDROID_LOGCAT),true)
LOCAL_CFLAGS+= -DDEBUG -DANDROID_NDK
endif

include $(BUILD_EXECUTABLE)

main.c

#include <stdio.h>
#include <unistd.h>

int main()

	printf("hello world \\n");
	return 0;

编译命令,在jni目录下:

/jni$ ndk-build
[arm64-v8a] Compile        : hello <= main.c
[arm64-v8a] Executable     : hello
[arm64-v8a] Install        : hello => libs/arm64-v8a/hello

文件生成目录在jni同级别下:obj/local/arm64-v8a

以上是关于ubuntu下android ndk编译环境搭建方法的主要内容,如果未能解决你的问题,请参考以下文章

windows下eclipse搭建android_ndk开发环境

ADT+NDK搭建jni编译环境

怎么样在ubuntu环境下配置sdk

Android NDK 环境搭建

Eclipse下搭建Android的NDK开发环境

eclipse里配置Android ndk环境,用eclipse编译.so文件