我们知道,在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交叉编译工具就介绍到这里了,希望对大家有所帮助,有任何疑问或者建议欢迎留言或者来信[email protected]交流,或者关注我的新浪微博 @卢_俊 获取最新的文章和资讯。


更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Python3原生编写月份计算工具
  3. 一款常用的 Squid 日志分析工具
  4. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  5. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  6. Android(安卓)游戏开发之服务器端
  7. android 给自己的app编写 用户引导(UserGuider)
  8. libevent 多线程IO
  9. Android开发周报:性能优化从入门到精通

随机推荐

  1. android纹理图片的加载与修改
  2. Android热修复:Qfix方案的gradle实践
  3. 对《深入理解Android虚拟机》一书的知识
  4. 一种粗暴快速的Android全屏幕适配方案
  5. Android应用程序键盘(Keyboard)消息处理机
  6. Android文件存储位置简述
  7. Android(安卓)Button控件 的简单使用(butt
  8. 采用跑马灯形式显示文本
  9. Android(安卓)P 指纹 HAL
  10. 限制EditText输入类型与长度