c交叉编译成可执行文件在android上运行
平台用的是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上运行相关推荐
- 编译可在Android上运行的qemu user mode
前言 本文在Ubuntu 64位系统上对qemu项目进行交叉编译,并且只编译与qemu user mode有关的代码. 下文中的"NDK"若无特殊说明均指"Android ...
- android通过c调用shmat函数,编译可在Android上运行的qemu user mode
编译可在Android上运行的qemu user mode @(Android研究)[android|qemu] [TOC] 前言 本文在Ubuntu 64位系统上对qemu项目进行交叉编译,并且只编 ...
- 有没有办法在Android上运行Python?
我们正在开发S60版本,该平台具有不错的Python API. 但是,关于Android上的Python尚无任何官方资料,但是由于Jython存在,有没有办法让蛇和机器人一起工作? #1楼 目前还没有 ...
- Android上运行Http Server
Android设备一般是作为客户端使用,但是最近一个项目需要用android开发板作为服务器和手机端通信,因此花了点时间研究了下如何在android上运行http server. 实际上这是有开源解决 ...
- python程序在安卓上如何运行-在 android 上运行 python 的方法
在android上运行python脚本,或者在android上使用python交互界面,对熟悉python的研究或开发人员来说,是一件很有吸引力的事情,因为python脚本真是非常高效,另外,有很多非 ...
- 安卓如何运行python_如何在android上运行Python代码?
这个非常简单,Termux和QPython3这2个安卓APP就可以,都集成了Python解释器,可以直接编辑运行Python代码,下面我简单介绍一下: Termux 这是一个安卓高级终端APP,类似于 ...
- 如何用android下载python_如何在android上运行Python代码
展开全部 在android上运行python脚本,或者在android上使用python交互界面,对熟悉python的研究或开发人员来说,是一件很有吸引力的e69da5e6ba906261696475 ...
- 甲骨文发布适用于 MongoDB 的 Oracle Database API;Chrome 和 Edge 互相“拉踩”;树莓派驱动程序现可在 Android 上运行 | 开源日报
整理 | 宋彤彤 责编 | 屠敏 开源吞噬世界的趋势下,借助开源软件,基于开源协议,任何人都可以得到项目的源代码,加以学习.修改,甚至是重新分发.关注「开源日报」,一文速览国内外今日的开源大事件吧! ...
- 如何将 EXE 文件转换为 APK 文件以在 Android 上运行
什么是 .exe 文件? .exe 是一种非常常见的文件格式,它实际上是"可执行"文件的缩写形式.此类文件通常用于运行或安装 Windows 计算机的软件应用程序.您在 Windo ...
最新文章
- 自由意志是否受机器控制?
- 5 篇 AAAI 2018 论文看「应答生成」
- 运行pip报错:Fatal error in launcher: Unable to create process using '’路径’'
- 8.Excel数据与指标概述
- 深度学习导论(2)深度学习案例:回归问题
- CF401C-Team【构造】
- 红旗linux mysql_恢复 - 红旗Linux案例精选:Amanda集中备份实例详细讲解_数据库技术_Linux公社-Linux系统门户网站...
- 计算机多媒体设计徽章,酷毙了:Hackaday将会议徽章设计成一台可编程的电脑
- 【caffe学习】caffe第二个比较典型的识别例子CIFAR_10的运行详解
- 差分硬盘的merge(合并差异)实验分析
- ipvsadm命令的用法
- 注意力测试软件系统,注意力综合评估训练系统
- IOS人脸识别开发入门教程--人脸检测篇
- 阿里云服务安装FTP服务器报200 227 entering passive mode(被动模式)错误
- 个税计算器-springboot版实现
- 生命也如同平常到化入夏风里的蝉鸣
- 电容的字母型规格型号标号材料容差总结
- linux proftpd 用户,Linux下安装和配置proftpd教程
- 密码包含-数字、大小写、特殊字符-正则表达式
- React.js学习(二)、三大属性statepropsref
热门文章
- 如何挑选无氧铜网线?
- 小白也能懂的可转债上市价格预测
- leaflet:入门基础(一)
- linux|管道符号
- 手把手教你写通讯录【C语言版】
- 从0到1介绍一下开源大数据服务平台dataService
- Flutter Android 13系统bug android.media.EncoderProfiles$VideoProfile.getWidth()
- IWorkbook 引入_中颖电子:拟为子公司芯颖科技引入投资者增资
- 广州“1中心3平台”智能交通大数据体系实践
- cuda10.0最佳实践的翻译(八到十七及两个附录)