平台用的是rk3399-android-10。
C语言小程序在linux上编译运行见:c编译成可执行文件在linux上运行

本文未涉及到命令行传参argc和argv,需要传参的main函数可看上方贴出的linux平台那篇链接。

以下是一个超级简单的例子:本文是不需要用makefile编译的例子,有时小工具只涉及到一个或极少的c文件时,一条指令编译即可。

单独建一个文件夹名为hello_world,里面就一个c文件。

test@ubuntu-07:~/workspace$ ls hello_world/
hello.c

c文件代码:

#include<stdio.h>
int main(void)
{printf("hello world\n");printf("goodbye\n");return 0;
}

编译:因为使用的平台是aarch64架构的,故而编译需要使用到aarch的交叉编译工具链。如果是别的架构就需要对应架构的交叉编译tools

test@ubuntu-07:~/workspace$ cd hello_world/
test@ubuntu-07:~/workspace/hello_world$ aarch64-linux-gnu-gcc -o hello_world --static hello.c
test@ubuntu-07:~/workspace/hello_world$ ls
hello.c  hello_world
test@ubuntu-07:~/workspace/hello_world$ file hello_world
hello_world: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, for GNU/Linux 3.10.61, BuildID[sha1]=bf3ff232fec01a5c9db6b037572a1a8514518fd1, not stripped
test@ubuntu-07:~/workspace/hello_world$

以上已经可以看出来是ELF(Executable and Linkable Format)文件了,并且适用于ARM aarch64架构。

如果想查看更多关于这个可执行文件的信息,还可用以下命令readelf:

test@ubuntu-07:~/workspace/hello_world$ readelf --file-header hello_world
ELF Header:Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 Class:                             ELF64Data:                              2's complement, little endianVersion:                           1 (current)OS/ABI:                            UNIX - System VABI Version:                       0Type:                              EXEC (Executable file)Machine:                           AArch64Version:                           0x1Entry point address:               0x4003f0Start of program headers:          64 (bytes into file)Start of section headers:          4746656 (bytes into file)Flags:                             0x0Size of this header:               64 (bytes)Size of program headers:           56 (bytes)Number of program headers:         6Size of section headers:           64 (bytes)Number of section headers:         38Section header string table index: 37
test@ubuntu-07:~/workspace/hello_world$

运行下看看效果。
先通过abd将电脑PC与android平台连接成功,将文件push到android文件系统中。
即:
adb connect 192.168.x.x
adb root
adb connect 192.168.x.x
adb remount
adb push xxx /vendor //不是必须为vendor位置
注:如果android系统是刚烧完的系统,需要adb disable-verity一下,否则push不进去。详细百度。


然后,可以在串口查看android文件系统中是否存在这个文件,push是否成功:

存在,但是直接运行会报权限错误。需要修改下可执行文件的权限。

chmod 777 给了该可执行文件最高权限

运行效果:

c交叉编译成可执行文件在android上运行相关推荐

  1. 编译可在Android上运行的qemu user mode

    前言 本文在Ubuntu 64位系统上对qemu项目进行交叉编译,并且只编译与qemu user mode有关的代码. 下文中的"NDK"若无特殊说明均指"Android ...

  2. android通过c调用shmat函数,编译可在Android上运行的qemu user mode

    编译可在Android上运行的qemu user mode @(Android研究)[android|qemu] [TOC] 前言 本文在Ubuntu 64位系统上对qemu项目进行交叉编译,并且只编 ...

  3. 有没有办法在Android上运行Python?

    我们正在开发S60版本,该平台具有不错的Python API. 但是,关于Android上的Python尚无任何官方资料,但是由于Jython存在,有没有办法让蛇和机器人一起工作? #1楼 目前还没有 ...

  4. Android上运行Http Server

    Android设备一般是作为客户端使用,但是最近一个项目需要用android开发板作为服务器和手机端通信,因此花了点时间研究了下如何在android上运行http server. 实际上这是有开源解决 ...

  5. python程序在安卓上如何运行-在 android 上运行 python 的方法

    在android上运行python脚本,或者在android上使用python交互界面,对熟悉python的研究或开发人员来说,是一件很有吸引力的事情,因为python脚本真是非常高效,另外,有很多非 ...

  6. 安卓如何运行python_如何在android上运行Python代码?

    这个非常简单,Termux和QPython3这2个安卓APP就可以,都集成了Python解释器,可以直接编辑运行Python代码,下面我简单介绍一下: Termux 这是一个安卓高级终端APP,类似于 ...

  7. 如何用android下载python_如何在android上运行Python代码

    展开全部 在android上运行python脚本,或者在android上使用python交互界面,对熟悉python的研究或开发人员来说,是一件很有吸引力的e69da5e6ba906261696475 ...

  8. 甲骨文发布适用于 MongoDB 的 Oracle Database API;Chrome 和 Edge 互相“拉踩”;树莓派驱动程序现可在 Android 上运行 | 开源日报

    整理 | 宋彤彤 责编 | 屠敏 开源吞噬世界的趋势下,借助开源软件,基于开源协议,任何人都可以得到项目的源代码,加以学习.修改,甚至是重新分发.关注「开源日报」,一文速览国内外今日的开源大事件吧! ...

  9. 如何将 EXE 文件转换为 APK 文件以在 Android 上运行

    什么是 .exe 文件? .exe 是一种非常常见的文件格式,它实际上是"可执行"文件的缩写形式.此类文件通常用于运行或安装 Windows 计算机的软件应用程序.您在 Windo ...

最新文章

  1. 自由意志是否受机器控制?
  2. 5 篇 AAAI 2018 论文看「应答生成」
  3. 运行pip报错:Fatal error in launcher: Unable to create process using '’路径’'
  4. 8.Excel数据与指标概述
  5. 深度学习导论(2)深度学习案例:回归问题
  6. CF401C-Team【构造】
  7. 红旗linux mysql_恢复 - 红旗Linux案例精选:Amanda集中备份实例详细讲解_数据库技术_Linux公社-Linux系统门户网站...
  8. 计算机多媒体设计徽章,酷毙了:Hackaday将会议徽章设计成一台可编程的电脑
  9. 【caffe学习】caffe第二个比较典型的识别例子CIFAR_10的运行详解
  10. 差分硬盘的merge(合并差异)实验分析
  11. ipvsadm命令的用法
  12. 注意力测试软件系统,注意力综合评估训练系统
  13. IOS人脸识别开发入门教程--人脸检测篇
  14. 阿里云服务安装FTP服务器报200 227 entering passive mode(被动模式)错误
  15. 个税计算器-springboot版实现
  16. 生命也如同平常到化入夏风里的蝉鸣
  17. 电容的字母型规格型号标号材料容差总结
  18. linux proftpd 用户,Linux下安装和配置proftpd教程
  19. 密码包含-数字、大小写、特殊字符-正则表达式
  20. React.js学习(二)、三大属性statepropsref

热门文章

  1. 如何挑选无氧铜网线?
  2. 小白也能懂的可转债上市价格预测
  3. leaflet:入门基础(一)
  4. linux|管道符号
  5. 手把手教你写通讯录【C语言版】
  6. 从0到1介绍一下开源大数据服务平台dataService
  7. Flutter Android 13系统bug android.media.EncoderProfiles$VideoProfile.getWidth()
  8. IWorkbook 引入_中颖电子:拟为子公司芯颖科技引入投资者增资
  9. 广州“1中心3平台”智能交通大数据体系实践
  10. cuda10.0最佳实践的翻译(八到十七及两个附录)