Cmake NDK交叉编译Android平台程序

2024-08-30 23:32

本文主要是介绍Cmake NDK交叉编译Android平台程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

当我们需要把我们的C++程序编译成Android平台的so库时,就需要用到交叉编译,有两种方法

目录

一:利用NDK进行编译

1.首先安装NDK

2.直接cmake,

二,独立的交叉编译工具链

1.安装独立的交叉编译工具链

2.makefile编译


自己使用的是方法一,直接用NDK的方法,方法二未尝试。

一:利用NDK进行编译

1.首先安装NDK

安装方法在: https://blog.csdn.net/u013171226/article/details/109572332

按照上面链接的步骤一安装NDK就好了,不要安装交叉编译工具链,

2.直接cmake,

利用cmake编译Android平台的程序时,只需要把X86平台的cmake ..修改为下面的格式:

cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \-DANDROID_ABI="armeabi-v7a" \-DANDROID_NDK=$ANDROID_NDK \-DANDROID_PLATFORM=android-22 \..

上面的ANDROID_NDK是你安装NDK时的路径,然后上面的配置是armv7架构平台的,如果是armv8平台的就配置成arm64-v8a,其实我们可以在$ANDROID_NDK/build/cmake/android.toolchain.cmake文件中找到下面的内容:

if(ANDROID_ABI STREQUAL "armeabi-v7a with NEON")set(ANDROID_ABI armeabi-v7a)set(ANDROID_ARM_NEON TRUE)
elseif(ANDROID_TOOLCHAIN_NAME AND NOT ANDROID_ABI)if(ANDROID_TOOLCHAIN_NAME MATCHES "^arm-linux-androideabi-")set(ANDROID_ABI armeabi-v7a)elseif(ANDROID_TOOLCHAIN_NAME MATCHES "^aarch64-linux-android-")set(ANDROID_ABI arm64-v8a)elseif(ANDROID_TOOLCHAIN_NAME MATCHES "^x86-")set(ANDROID_ABI x86)elseif(ANDROID_TOOLCHAIN_NAME MATCHES "^x86_64-")set(ANDROID_ABI x86_64)elseif(ANDROID_TOOLCHAIN_NAME MATCHES "^mipsel-linux-android-")set(ANDROID_ABI mips)elseif(ANDROID_TOOLCHAIN_NAME MATCHES "^mips64el-linux-android-")set(ANDROID_ABI mips64)endif()

cmake之后就直接编译即可。

二,独立的交叉编译工具链

1.安装独立的交叉编译工具链

安装方法见: https://blog.csdn.net/u013171226/article/details/109572332

2.makefile编译

安装完交叉编译工具链之后,可以吧x86平台的makefile中的gcc修改为交叉编译工具链,然后进行编译。

这篇关于Cmake NDK交叉编译Android平台程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1122243

相关文章

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

Python程序的文件头部声明小结

《Python程序的文件头部声明小结》在Python文件的顶部声明编码通常是必须的,尤其是在处理非ASCII字符时,下面就来介绍一下两种头部文件声明,具有一定的参考价值,感兴趣的可以了解一下... 目录一、# coding=utf-8二、#!/usr/bin/env python三、运行Python程序四、

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

SpringBoot后端实现小程序微信登录功能实现

《SpringBoot后端实现小程序微信登录功能实现》微信小程序登录是开发者通过微信提供的身份验证机制,获取用户唯一标识(openid)和会话密钥(session_key)的过程,这篇文章给大家介绍S... 目录SpringBoot实现微信小程序登录简介SpringBoot后端实现微信登录SpringBoo