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

该博客详细介绍了如何在Ubuntu系统中下载并安装Android NDK r13b,然后通过make-standalone-toolchain.sh脚本创建交叉编译环境,分别针对arm64平台进行编译。最后,展示了如何设置环境变量,并提供了两种编译C程序的方法,包括直接编译和通过创建Android工程进行编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值