在Android系统执行C程序,需要使用Android系统的专用编译器NDK,下载NDK工具可以通过以下博文中给出的链接:

https://blog.csdn.net/baidu_35904821/article/details/62218559

Android API与版本对应关系:

https://www.jianshu.com/p/27711d61f221

除了使用封装好UI界面的Android程序编译环境如Android Studio或者MyEclipse调用NDK工具包,还可以自己动手配置相关环境变量后,在命令行使用NDK工具。

命令行NDK的使用方法有两种,以使用android-ndk-r13b的ARM架构版本为例,首先下载Windows或者Linux相应版本的NDK工具包,接着有两种方法如下:

1、Linux下配置路径export PATH=$PATH:$HOME/home/.../android-ndk-r13b,Windows下配置环境变量即可,然后编写Android.mk 与 Application.mk脚本,使用命令ndk-build即可。

关于Android.mk 与 Application.mk脚本,可以通过以下博文简单了解:

https://blog.csdn.net/libinbin147256369/article/details/80026182

https://www.jianshu.com/p/26275f3d583e

2、linux下source环境变量脚本,配置编译器和链接库,在shell中source执行配置脚本,脚本内容可以如下:

export PATH=$PATH:/home/.../android-ndk-r13b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/
alias android-gcc='arm-linux-androideabi-gcc --sysroot=/home/.../android-ndk-r13b/platforms/android-18/arch-arm'

脚本将arm-linux-androideabi-gcc编译器封装成android-gcc,执行android-gcc命令可以编译运行于Anroid系统的C程序(注意内核架构对编译器选择的影响)。

第二种方法比较适合快速编译和调试程序,可以通过命令android-gcc -v来检测初步配置是否成功:

fupenzi@ubuntu:~/workspace$ android-gcc -v
Using built-in specs.
COLLECT_GCC=arm-linux-androideabi-gcc
COLLECT_LTO_WRAPPER=/home/yut/fuyp/android/android-ndk-r13b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../libexec/gcc/arm-linux-androideabi/4.9.x/lto-wrapper
Target: arm-linux-androideabi
Configured with: /usr/local/google/buildbot/src/android/gcc/toolchain/build/../gcc/gcc-4.9/configure --prefix=/tmp/59719db9ae19ff43aef46bbcb79596b6 --target=arm-linux-androideabi --host=x86_64-linux-gnu --build=x86_64-linux-gnu --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --with-gmp=/buildbot/tmp/build/toolchain/temp-install --with-mpfr=/buildbot/tmp/build/toolchain/temp-install --with-mpc=/buildbot/tmp/build/toolchain/temp-install --with-cloog=/buildbot/tmp/build/toolchain/temp-install --with-isl=/buildbot/tmp/build/toolchain/temp-install --with-ppl=/buildbot/tmp/build/toolchain/temp-install --disable-ppl-version-check --disable-cloog-version-check --disable-isl-version-check --enable-cloog-backend=isl --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --disable-tls --disable-libitm --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --enable-bionic-libs --enable-libatomic-ifuncs=no --enable-initfini-array --disable-nls --prefix=/tmp/59719db9ae19ff43aef46bbcb79596b6 --with-sysroot=/tmp/59719db9ae19ff43aef46bbcb79596b6/sysroot --with-binutils-version=2.25 --with-mpfr-version=3.1.1 --with-mpc-version=1.0.1 --with-gmp-version=5.0.5 --with-gcc-version=4.9 --with-gdb-version=none --with-gxx-include-dir=/tmp/59719db9ae19ff43aef46bbcb79596b6/include/c++/4.9.x --with-bugurl=http://source.android.com/source/report-bugs.html --enable-languages=c,c++ --disable-bootstrap --enable-plugins --enable-libgomp --enable-gnu-indirect-function --disable-libsanitizer --enable-gold --enable-threads --enable-eh-frame-hdr-for-static --enable-graphite=yes --with-isl-version=0.11.1 --with-cloog-version=0.18.0 --with-arch=armv5te --program-transform-name='s&^&arm-linux-androideabi-&' --enable-gold=default
Thread model: posix
gcc version 4.9.x 20150123 (prerelease) (GCC)

然后和使用GCC编译器一样,执行命令如:android-gcc client.c -o client_android,即可在Linux PC机上命令行编译Android系统的C程序。

附上一些常用的Android嵌入式系统的调试命令:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~常用调试命令~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
getprop
+++++获取系统的所有配置信息
getprop ro.product.cpu.abi
+++++获取单项配置信息
getprop ro.build.version.release
+++++获取Android版本信息
getprop ro.build.version.sdk
+++++获取系统API信息
setprop confnm value
+++++对指定配置项重新赋值
pm install -r xxx.apk
+++++安装android apk
pm list packages
+++++查看所有已经安装的APP
pm install/uninstall
+++++安装或者删除APP
am start -n com.app/.init.WelcomeActivity
+++++启动某应用,在AndroidManifest.xml文件中查看声明的Activity信息
am restart
+++++重启
dumpsys activity activities
+++++查看正在运行的Activity

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~busybox~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mount -o remount /
+++++重新挂载根文件系统,并将权限默认为rw,sdcard目录为可读可写
busybox chmod 777 file
+++++修改执行权限

Android系统的命令行操作及C程序编译相关推荐

  1. hadoop系统 hdfs 命令行操作

    转自:https://blog.csdn.net/sjhuangx/article/details/79796388 Hadoop文件系统shell命令列表: https://hadoop.apach ...

  2. android分区卸载命令行,Android ADB命令 将apk安装到系统应用及删除方法

    用ADB命令将安卓应用APK安装到system下为系统应用: 将安卓应用APK安装到system下为系统应用: 1.用USB连接手机到电脑,打开cmd 运行-cmd 2.把xxx.apk包拷贝到手机s ...

  3. Android设备如何进行命令行操作

    可以下载终端模拟器,然后执行系统自带的shell命令即可. android中如何直接进行shell命令行操作? 安卓开发者必备的5款App:终端模拟器.颜色萃取.移动IDE等 T-UI Launche ...

  4. android.mk 添加v7_在Android上以命令行方式移植FFmpeg

    最近要做视频I帧提取和摘要生成的项目,在Android平台上的应用,经过调研,发现ffmpeg有很多相关功能的轮子,因此考虑将ffmpeg移植到Android平台.为了更好解耦和以及更多的文档参考,选 ...

  5. 在Linux系统的命令行中为MySQL创建用户的方法

    这篇文章主要介绍了在Linux系统的命令行中为MySQL创建用户的方法,包括对所建用户的权限管理,需要的朋友可以参考下 要访问一个MySQL服务器,你需要使用一个用户帐号登录其中方可进行.每个MySQ ...

  6. android studio shell 命令行自动打包(mac 平台)

    android studio shell 命令行自动打包(mac 平台) 作者 CrazySongHang 关注 2015.04.10 22:56* 字数 494 阅读 4165评论 1喜欢 2 如果 ...

  7. Git 简介和命令行操作

    Git 简介 官网地址:https://git-scm.com/ 3Git 的优势  大部分操作在本地完成,不需要联网  完整性保证  尽可能添加数据而不是删除或修改数据  分支操作非常快捷流 ...

  8. linux搭建raid5命令,命令行操作RAID5

    命令行操作RAID5 本文作者 szxsztszk ,其著作权归 szxsztszk 所有. -------------- RAID5: mdadm是一个全新的raid管理工具,rhel LINUX版 ...

  9. postgresql 命令行操作

    1.登录 #只指定用户,默认postgres库 psql -U postgres#指定主机和端口,用户,还需要密码认证,默认postgres库 psql -h localhost -p 5432 -U ...

最新文章

  1. Leetcode-998 Maximum Binary Tree II(最大二叉树 II)
  2. 关于C#中实现两个应用程序消息通讯的问题
  3. Java EE CDI bean范围
  4. 华为mate40RS能升级鸿蒙,mate40Pro和40RS能用上鸿蒙系统吗
  5. mongodb java spring_[Java教程]Spring 与 mongoDB 整合
  6. git 创建tag , 查看tag , 删除tag
  7. powerDesigner需求建模
  8. 登峰连接程式改坐标软件_数控仿真软件CIMCOEdit常用的操作,新手必看
  9. python 生成器原理_python生成器
  10. memcached部署安装文档
  11. 20170908在线编程之圆周上问两点间的距离问题
  12. testbench实例 vhdl_[转载]VHDL的testbench的编写
  13. 单片机原理及应用程序c语言版题库,单片机原理及应用期末复习题库(含答案)...
  14. An动画优化之遮罩层动画
  15. 今日科普:什么是MEMS传感器
  16. $java_home位置_关于java home:echo $ JAVA_HOME不返回jdk位置
  17. excel工具栏隐藏了怎么办_Excel的可视化伴侣—水晶易表
  18. ArcGIS Engine开发教程之图层符号化
  19. linux启动/停止/重启MySQL的命令
  20. QQ微信营销软件防封操作秘籍

热门文章

  1. 3D车道线检测:Gen-LaneNet
  2. CVPR2020最新论文扫描盘点(上)
  3. DCN-s4600 ssh服务登录配置:
  4. C++ 共用体union 的使用
  5. Android 隐式跳转(Activity的隐式跳转)
  6. Could not download lint-gradle.jar (com.android.tools.lint:lint-gradle:26.4.
  7. Python爬取4399好wan的小游戏!
  8. 小程序 navigator 无法跳转 tabBar上的页面
  9. Superset配置hive数据源
  10. IPv6地址分类及表示方法