c程序

Android下运行c程序

限于喜欢 提交于 2020-03-30 06:49:50
在android的设计中,谷歌设计了一套专门为嵌入式设备使用的bionic C库,以替换原有的GUN Libc,这个精简的bionic库据说只有200多K,所以如果只想使用这个精简的C库像在linux下一样 开发C程序,基本是不可能的。当然如果只想让其在shell中运行还是可以做到的。 因为编译完的目标程序是在android下运行,就要使用交叉编译的工具,在下面地址下载: http://www.codesourcery.com/gnu_toolchains/arm/download.html 下载完之后,bin目录下的arm-none-linux-gnueabi-gcc就是交叉编译器了 #include <stdio.h> int main() { printf("nihao a\n"); printf("你好 啊\n"); return 1; } 输入一下命令: ./arm-none-linux-gnueabi-gcc hello.c -o hello -static -static选项在这里是必须的,否则会出现”not found”的错误。 然后就可以把编译好的hello传到手机上运行了。不过这里有个前提条件,要求android机器必须是root过的,好像简单的z4root还不行,必须使用更彻底的root方法,关于如何root,这里就不再赘述了,可以参考相关root的帖子。

Linux下编译并运行c程序

给你一囗甜甜゛ 提交于 2020-03-09 19:42:08
首先,在使用计算机办公或学习的过程中一定要让文件有条理的存放在文件夹中, 所以编 写c程序的第一步:创建一个专门存放c程序的文件夹。 在主目录中创建一个名为 'c程序设计’的文件夹: mkdir c程序设计 进入文件夹: cd c程序设计 创建vim文件 : vim hello . c 按i或者insert键进入插入模式,然后编写一个c程序: # include <stdio.h> int main ( ) { printf ( "hello world" ) ; return 0 ; } 按esc键退出插入模式,然后输入:wq保存并退出 , 这时候你就能在文件夹里发现hello.c这一文件,但这只是一个脚本,想要运行该脚本,必须通过编译,生成一可执行文件。 编译hello.c gcc hello . c 直接键入这一行代码,你将在你的文件夹中发现一个名为a.out的文件,这就类似u我们在windows环境下所熟悉的.exe文件。 但我并不推荐大家直接使用这种方式编译文件,当我们编写的程序数量变多时,我们会找不到生成的新的.out文件。所以我推荐使用下面这种编译方式 在编译时为即将生成的可执行文件命名: gcc hello . c - o hello . out //使用windows下cmder的同学可以把hello.out改为hello.exe 编译成功的话

编写优质嵌入式C程序

╄→гoц情女王★ 提交于 2020-01-12 00:05:08
原文地址: http://blog.csdn.net/zhzht19861011/article/details/45508029 前言: 这是一年前我为公司内部写的一个文档,旨在向年轻的嵌入式软件工程师们介绍如何在裸机环境下编写优质嵌入式C程序。感觉是有一定的参考价值,所以拿出来分享,抛砖引玉。 摘要:本文首先分析了C语言的陷阱和缺陷,对容易犯错的地方进行归纳整理;分析了编译器语义检查的不足之处并给出防范措施,以Keil MDK编译器为例,介绍了该编译器的特性、对未定义行为的处理以及一些高级应用;在此基础上,介绍了防御性编程的概念,提出了编程过程中就应该防范于未然的多种措施;提出了测试对编写优质嵌入式程序的重要作用以及常用测试方法;最后,本文试图以更高的层次看待编程,讨论一些通用的编程思想。 1. 简介 市面上介绍C语言以及编程方法的书数目繁多,但对如何编写优质嵌入式C程序却鲜有介绍,特别是对应用于单片机、ARM7、Cortex-M3这类微控制器上的优质C程序编写方法几乎是个空白。本文面向的,正是使用单片机、ARM7、Cortex-M3这类微控制器的底层编程人员。 编写优质嵌入式C程序绝非易事,它跟设计者的思维和经验积累关系密切。嵌入式C程序员不仅需要熟知硬件的特性、硬件的缺陷等,更要深入一门语言编程,不浮于表面。为了更方便的操作硬件,还需要对编译器进行深入的了解。

在linux环境下编写C程序

放肆的年华 提交于 2019-12-15 09:35:16
在linux环境下编写C程序 在linux环境下编写C程序一般使用文本编辑器vim,vim是linu下的老牌编辑工具vi的升级版本,其功能更加强大,更适合用来 编辑C程序。在一些linux的发行版本如deepin等都是自带vi的,用户可以直接使用;而在另一些发行版本如ubuntu等则是 只有vi而没有vim的,这时候就需要我们自己去完成vim的安装。 vim的安装:在ubuntu系统下同时使用`ctrl----alt----t`打开终端,并在终端上输入命令`vim enter`系统会提示找不到命令, 这时就可以按照系统的提示输入`sudo apt-get install vim-gtk`enter系统会让你选择是否继续执行命令,输入`y`,选择继续执 行,然后就可以等待vim安装完成。 待vim安装完成之后,在终端输入`vim` 文件名`enter`就可 创建一个文件,在这里我们需要编写C程序,所以要把文件名 后缀改成.c,即输入`vim 文件名.c`enter就代表创建了一个C序源文件。这时就会进入vim的编辑界面,并且是vim的命令模 式。在这个模式下,我们可以使用一些vim的专属命令来对件进行修改,且在此模式下,所键入的字符都会算作命令而不 会作为文本内容。此时输入`i`命令进入插入模式,在此模式下可以对文本进行编辑,此时所输入的内容都会被看作字符即文 本内容

初识C程序与Linux交互

☆樱花仙子☆ 提交于 2019-12-05 22:34:36
Linux下程序的返回值 要开发能在Linux下运行的C程序工具,对C程序与Linux的基本交互方式的认识是必不可少的。 首先需要了解到,在Linux终端中,程序的运行都会有一个返回值,若该返回值是0,则代表该程序运行成功,若返回值是其他数值,则表示该程序的运行出错了,而这个数值一般是代表其错误码。 使用echo $?命令可以查看上一条命令执行后返回的值。 ls cworkspace Documents Music Public Videos Desktop Downloads Pictures Templates echo $? 0 另外还需要了解到的是 && 的使用: 命令一 && 命令二 只有当命令一成功运行了,即返回值为0的时候,命令二才会被执行。因此这也是判断命令执行是否成功的一种方式。 C程序的返回值 一般情况下,我们在编写C的main函数的时候,都习惯在结尾返回一个0。其实这也是为了表示程序的成功运行,也就是说,如果程序运行有错,我们可以返回除了0以外的其他数值。 C的返回值就是C程序与Linux进行交互的方式之一。 当我们对C程序成功编译后,得到了可执行程序,执行该可执行程序会得到一个返回值,可以使用以上方式进行查看。 实验如下: 创建一个C程序命名为main.c: #include <stdio.h> int main() { printf (

7.Android下开机自启动C程序

匿名 (未验证) 提交于 2019-12-03 00:00:02
简单介绍下在Android开机自启动C程序方法,在C程序由于某种原因退出时,并能重新启动,在不使用rild的功能的条件下,如果使用rild功能,则更改一下相应的服务即可,或者自己添加一个简单的服务。 1.把Android源码hardware/ril/rild/rild.c 替换成如下: #define LOG_TAG "RILD" #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <pthread.h> #include <utils/Log.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <cutils/properties.h> //property_set() #define PPPD_SERVICE_NAME "pppd_gprs" #define FIFO_NAME "/system/bin/Sh_fifo" #define INDEX_INIT 25 //多少秒数接收不到C程序的响应后重启C程序 #define COUNT_MAX 5 //多少次重启C程序不成功后重启系统 static int Index = INDEX_INIT ; static int count = 0 ;

C,C+和C++它们有什么区别

匿名 (未验证) 提交于 2019-12-02 23:57:01
只有C语言和C++语言,没有C+语言。 1、出现时间不同 C++是C的超集,也可以说C是C++的子集,因为C先出现。按常理说,C++编译器能够编译任何C程序,但是C和C++还是有一些小差别。 例如C++增加了C不具有的关键字。这些关键字能作为函数和变量的标识符在C程序中使用,尽管C++包含了所有的C,但显然没有任何C++编译器能编译这样的C程序。 2、C程序可以省略函数原型,而C++不可以 一个不带参数的C函数原型必须把void写出来。而C++可以使用空参数列表。C++中new和delete是对内存分配的运算符,取代了C中的malloc和free。标准C++中的字符串类取代了C标准C函数库头文件中的字符数组处理函数(C中没有字符串类型)。 C++中用来做控制态输入输出的iostream类库替代了标准C中的stdio函数库。C++中的try/catch/throw异常处理机制取代了标准C中的setjmp()和longjmp()函数。 3、关键字和变量不同 在C++中还增加了bool型变量和wchar_t型变量:布尔型变量是有两种逻辑状态的变量,它包含两个值:真和假。如果在表达式中使用了布尔型变量。 那么将根据变量值的真假而赋予整型值1或0。要把一个整型变量转换成布尔型变量,如果整型值为0,则其布尔型值为假;反之如果整型值为非0,则其布尔型值为真。布儿型变量在运行时通常用做标志