当我们需要把我们的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平台程序相关推荐

  1. Mac下ndk交叉编译arm平台程序

    1.下载ndk 2.使用ndk交叉编译exp.c <1>.编写:Makefile NDK_ROOT=/Users/xxx/Documents/Android_SDK/android-ndk ...

  2. android+程序崩溃,Android平台程序崩溃的类型及原因列举

    Android平台程序崩溃大家都应该遇到过,force close和ANR应该是大家遇到较多的. 这里把Android平台程序崩溃的各种类型做一个简述和原因列举. 1.ANR(可见ANR): 发生场景 ...

  3. Android平台程序崩溃的类型及原因列举

    Android平台程序崩溃大家都应该遇到过,force close和ANR应该是大家遇到较多的. 这里把Android平台程序崩溃的各种类型做一个简述和原因列举. 1.ANR(可见ANR): 发生场景 ...

  4. 利用 CMake 和 NDK 交叉编译 Android 下的可执行程序

    为什么80%的码农都做不了架构师?>>>    之前开发 Android 下的二进制程序都是开个 jni 目录, 手写 Android.mk, 然后调用 ndk-build 生成可执 ...

  5. 【Android 安装包优化】p7zip 源码交叉编译 Android 平台可执行程序 ( 下载 p7zip 源码 | 交叉编译 Android 中使用 7z 可执行程序 )

    文章目录 一.下载 p7zip 源码 二.交叉编译 Android 中使用 7z 可执行程序 三.参考资料 一.下载 p7zip 源码 下载 7zip 源码 , 下载页面 https://source ...

  6. 基于NDK编译Android平台的FFmpeg动态库

    需求 FFmpeg在Linux平台(如Ubuntu)上的支持已经比较完善了,如前述文章介绍 http://blog.csdn.net/ericbar/article/details/73702061, ...

  7. Android平台Qt开发入门教程

    很多人会问,Android平台可以不使用Java开发应用程序?? 我做Android平台native开发之前,也有这么想过,但是我又想,底层系统全是c/c++代码,用c/c++开发Android平台程 ...

  8. 米狗族 Android平台Qt开发入门教程

    很多人会问,Android平台可以不使用Java开发应用程序?? 我做Android平台native开发之前,也有这么想过,但是我又想,底层系统全是c/c++代码,用c/c++开发Android平台程 ...

  9. 使用NDK20编译Android平台的ffmpeg

    使用NDK编译Android平台的ffmpeg 编译环境 安装 编译 避坑 如何添加h264支持 编译环境 注意选择Linux版本的包下载 Ubuntu 16 下载 ndk20 下载 ffmpeg4. ...

最新文章

  1. VMWare中CentOS7 设置固定IP且能够访问外网
  2. IDEA坑爹跟新的小BUG解决之道
  3. 快速排序伪代码_数据结构和算法之快速排序
  4. 如何成为一个设计师和程序员混合型人才
  5. L1-010 比较大小(8行代码AC!!!)
  6. R中‘ts‘ object must have one or more observations
  7. client 连接 host —— 虚拟机
  8. Python(pycharm)在windows下路径 ( ' / ' 与' \ ' )的问题
  9. mavros 使用记录
  10. Zabbix安装图解教程
  11. HBase之HFile详解
  12. Cherry,你会喜欢这种手机!
  13. java通过smtp发送电子邮件
  14. Windows网上邻居 授权访问设置
  15. 2022年春招牛客网最热门的Java岗面试八股文汇总
  16. Canvas: trying to draw too large bitmap 红米 k30 奔溃
  17. jQuery-3.4.1下载
  18. 数论概论笔记 第3章 勾股数组与单位圆
  19. Bugku--散乱的密文
  20. python爬取携程网航班机票信息并存储到数据库中,2020年最新版本

热门文章

  1. c 语言单位转换编程,单位转换程序
  2. DDD为什么能火起来?和微服务有啥关系?
  3. maven强制刷新本地包:(用于打包后重新加载)
  4. 新品发布 | 极海半导体工业级互联型APM32F107/F105系列MCU,拓展通信外设助力产品应用创新
  5. Activiti 7.0 正式发布啦-Activiti Core 与 Activiti Cloud Beta1
  6. C++和Rust_自从尝了 Rust,Java 突然不香了
  7. 【 失踪人口回归】新·学期
  8. GeoGebra-一个功能类似于几何画板的开源绘图软件
  9. Centos7安装go1.14.4超级详细(两种安装方式)
  10. amule mldonkey