我们知道,在Linux下可以使用gcc来把一份C代码编译成为Linux上的可执行程序, 如:

$ gcc -o main.out main.c

而Android平台提供了NDK工具包来交叉编译可以运行于Android系统中的应用程序, 它需要我们编写 Android.mk来配置编译选项和编译目标, 那么, 能否也像gcc那样直接在命令行下编译呢?

答案是可以的, NDK只不过是把这个过程封装和抽象了而已, 我们完全可以直接调用 NDK 提供的编译工具链来编译我们的C代码, 方法如下所示(在命令行界面中执行):

1. 定义相关的目录(请修改为自己的相关目录)

$ export NDKROOT=/opt/android/android-ndk-r10

$ export SYSROOT=$NDKROOT/platforms/android-19/arch-arm

$ export GCC=$NDKROOT/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc

2. 编译代码

$ $GCC -o main.out main.c --sysroot=$SYSROOT

3. 执行程序

$ adb push main.out /data/local/

$ adb shell

$ /data/local/main.out

其核心思想其实很简单, 就是使用NDK提供的arm-linux-androideabi-gcc代替Linux下的gcc工具, 使用NDK提供的C头文件/库文件目录代替 Linux 下默认的目录, 其实, 使用gcc编译的时候默认的 sysroot设置为了本机的"/"目录, 等价于如下命令 :

$ gcc -o main.out main.c --sysroot=/

关于如何在命令行下使用Android NDK交叉编译工具就介绍到这里了,希望对大家有所帮助,有任何疑问或者建议欢迎留言或者来信lujun.hust@gmail.com交流,或者关注我的新浪微博 @卢_俊 获取最新的文章和资讯。

android 能调用gcc_如何在命令行下使用Android NDK交叉编译工具相关推荐

  1. 如何在命令行下使用Android NDK交叉编译工具

    我们知道,在Linux下可以使用gcc来把一份C代码编译成为Linux上的可执行程序, 如: $ gcc -o main.out main.c 而Android平台提供了NDK工具包来交叉编译可以运行 ...

  2. Linux下编译build的命令,Linux命令行下编译Android NDK的示例代码

    这几天琢磨写一个Android的Runtime用来加速HTML5 Canvas,让GameBuilder+CanTK 不但开发速度快,运行速度也能接近原生应用.所以花了点时间研究Android NDK ...

  3. android java调用参数,如何从命令行调用Android JNI函数并传递Java对象参数

    一.前言 当我们对某个使用原生库(native library)的恶意软件或者应用进行分析或渗透测试时,如果能够对库函数进行隔离和执行是再好不过的事情,这样做我们就可以使用其自身的代码来调试对抗恶意软 ...

  4. Windows命令行下的十六进制文件查看工具Hexdump

    Hexdump for Windows官网下载地址:https://www.di-mgt.com.au/hexdump-for-windows.html 在官网找到这个下载地址 下载之后记得校验哈希值 ...

  5. 命令行下jq才是JSON 处理利器呀

    jq 简介 JSON 是一种轻量级的数据交换格式.其采用完全独立于语言的文本格式,具有方便人阅读和编写,同时也易于机器的解析和生成.这些特性决定了 JSON 格式越来越广泛的应用于现代的各种系统中.作 ...

  6. 一招教你在Linux命令行下测网速

    前言 大家平时使用电脑.手机进行上网的时候,网络的速度往往是你最关心的指标,而网络的好坏我们一般都会使用专业的网速测试软件,根据测试数据来判断网络好坏.那么本文将介绍Linux 命令行下的网络测速工具 ...

  7. [Shell学习笔记] 命令行下的高级网络工具cURL命令

    原文: http://www.1987.name/365.html Linux curl命令是一个利用URL规则在命令行下工作的文件传输工具.它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯 ...

  8. Android日志[进阶篇]三-Logcat 命令行工具

    Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Androi ...

  9. android运行jar文件路径,java命令行执行jar包报错解决

    今天遇到一个问题,在终端doc命令行下,执行java -jar 操作,报错Error: Unable to access jarfile CheckAndroidV2Signature.jar 找了各 ...

最新文章

  1. NFS共享服务挂载时出现“access denied by server while mounting”的解决方法
  2. c语言字母g,C语言库函数(G类字母) - 1.doc
  3. python相同key合并value_Python快速入门最需掌握的4个知识点
  4. 预告 | CSIG图像图形学科前沿讲习班:图神经网络
  5. P1377 [TJOI2011]树的序 笛卡尔树优化建树
  6. Python编程从入门到实践~异常
  7. 为什么大学感觉学编程很难?原因有这三点。
  8. 一天 6 个面试邀约,投一个约一个,挡不住!
  9. Effective C++ 读后感
  10. 2017.9.30 CF #R4 D 思考记录
  11. mysql as不能用吗,MySQL SUM不能与AS一起工作
  12. 基于动态代理 Mock dubbo 服务的实现方案
  13. 网站嵌入虚拟试衣间方案问题
  14. 企业微信自建内部应用Demo源码,附在线Demo及视频讲解,创建测试公司及测试应用简单配置即可使用
  15. 中国云服务商最新排名:阿里云第一腾讯云华为云分列二、三名
  16. spring boot通用办事流程管理软件 毕业设计-附源码211819
  17. Airtest 网易 UI 自动化工具 Airtest 浅用记录
  18. 手写VIO学习总结(二)
  19. 知识图谱系统课程笔记(二)——知识抽取与挖掘
  20. 【十进制 转 二进制】【二进制 转 十进制】10进制 VS 2进制【清华大学考研机试题】

热门文章

  1. sqlserver可视化工具_数据分析之基础分析工具篇(修订版)
  2. 吉比特java开发_JVM 吉比特后台 Java 开发实习生 20 分钟一轮游 _好机友
  3. linux一个vlan配置多个端口映射,Linux 设置 多ip,多vlan
  4. RTMP播放器开发填坑之道
  5. 这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析
  6. android lua loadluafile 相对路径,Lua中的loadfile、dofile、require详解
  7. mysql 查询商品列表 显示tag_让前台页面商品列表显示后台数据库中的商品
  8. python写windows程序_【Python学习】Python 写Windows Service服务程序
  9. php获取手机的mac地址,Android手机获取Mac地址的方法
  10. linux第三方模块参数,nginx 的第三方模块ngx_http_accesskey_module 来实现下载文件的防盗链步骤(linux系统下)...