本节书摘来异步社区《嵌入式 Linux C 语言应用程序设计(修订版)》一书中的第2章,第2.1节,作者:华清远见嵌入式培训中心,孙琼,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.1 嵌入式Linux下C语言概述

嵌入式 Linux C 语言应用程序设计(修订版)
读者在第一章中已经了解了嵌入式开发的基本流程,在嵌入式系统中应用程序的主体是在宿主机中开发完成的,就嵌入式Linux而言,此过程则一般是在安装有Linux的宿主机中完成。

在本章中介绍的实际是嵌入式Linux下C语言的开发工具,用户在开发时往往是在Linux宿主机中对程序进行调试,然后再进行交叉编译的。

2.1.1 C语言简史

C语言于20世纪70年代诞生于美国的贝尔实验室。在此之前,人们编写系统软件主要是使用汇编语言。

汇编语言编写的程序依赖于计算机硬件,其可读性和可移植性都比较差。而高级语言的可读性和可移植性虽然较汇编语言好,但一般高级语言又不具备低级语言能够直观地对硬件实现控制和操作而且执行速度快等特点。

在这种情况下,人们迫切需要一种既具有一般高级语言特性,又具有低级语言特性的语言,于是C语言就应运而生了。

由于C语言既具有高级语言的特点又具有低级语言的特点,因此迅速普及,成为当今最有发展前途的计算机高级语言之一。C语言既可以用来编写系统软件,也可以用来编写应用软件。现在,C语言已经被广泛地应用在除计算机行业外的机械、建筑和电子等各个行业中。

C语言的发展历程如下。

C语言最初是美国贝尔实验室的D.M.Ritchie在B语言的基础上设计出来的,此时的C语言只是为了描述和实现UNIX操作系统的一种工作语言。在一段时间里,C语言还只在贝尔实验室内部使用。
1975年,UNIX第6版公布后,C语言突出的优点引起人们的普遍注意。
1977年出现了可移植的C语言。
1978年UNIX第7版的C语言成为后来被广泛使用的C语言版本的基础,被称为标准C语言。
1983年,美国国家标准化协会(ANSI)根据C语言问世以来的各种版本,对C语言进行发展和扩充,并制定了新的标准,称为ANSI C。
1990年,国际标准化组织ISO制定了ISO C标准,目前流行的C语言编译系统都是以它为标准的。

2.1.2 C语言特点

C语言兼有汇编语言和高级语言的优点,既适合于开发系统软件,也适合于编写应用程序。被广泛应用于事务处理、科学计算、工业控制、数据库技术等领域。

C语言之所以能存在和发展,并具有强大的生命力,这都要归功于其鲜明的特点。这些特点是多方面的,归纳如下。

1.C语言是结构化的语言
C语言采用代码及数据分隔的方式,使程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。

C语言是以函数形式提供给用户的,这些函数可方便地调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

2.C语言是模块化的语言
C语言主要用于编写系统软件和应用软件。一个系统软件的开发需要很多人经过几年的时间才能完成。一般来说,一个较大的系统程序往往被分为若干个模块,每一个模块用来实现特定的功能。

在C语言中,用函数作为程序的模块单位,便于实现程序的模块化。在程序设计时,将一些常用的功能模块编写成函数,放在函数库中供其他函数调用。模块化的特点可以大大减少重复编程。程序设计时,只要善于利用函数,就可减少劳动量、提高编程效率。

3.程序可移植性好
C语言程序便于移植,目前C语言在许多计算机上的实现大都是由C语言编译移植得到的,不同机器上的编译程序大约有80%的代码是公共的。程序不做任何修改就可用于各种型号的计算机和各种操作系统。因此,特别适合在嵌入式开发中使用。

(4)C语言运算符丰富、代码效率高

C语言共有34种运算符,使用各种运算符可以实现在其他高级语言中难以实现的运算。在代码质量上,C语言可与汇编语言媲美,其代码效率仅比用汇编语言编写的程序的代码低10%~20%。

2.1.3 嵌入式Linux C语言编程环境

嵌入式Linux C语言程序设计与在其他环境中的C程序设计很类似,也涉及编辑器、编译链接器、调试器及项目管理工具的使用。现在我们先对这4种工具进行简单介绍,后面会对其一一进行讲解。

1.编辑器
嵌入式Linux下的编辑器就如Windows下的Word、记事本等一样,完成对所录入文字的编辑功能,最常用的编辑器有vi(vim)和Emacs,它们功能强大,使用方便,本书重点介绍vi和Emacs。

2.编译链接器
编译过程包括词法、语法和语义的分析、中间代码的生成和优化、符号表的管理和出错处理等。在嵌入式Linux中,最常用的编译器是GCC编译器。它是GNU推出的功能强大、性能优越的多平台编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。

3.调试器
调试器可以方便程序员调试程序,但不是代码执行的必备工具。在编程的过程当中,调试所消耗的时间远远大于编写代码的时间。因此,有一个功能强大、使用方便的调试器是必不可少的。GDB可以方便地设置断点、单步跟踪等,足以满足开发人员的需要。

4.项目管理器
嵌入式Linux中的项目管理器“make”类似于Windows中Visual C++里的“工程”,它是一种控制编译或者重复编译软件的工具,另外,它还能自动管理软件编译的内容、方式和时机,使程序员能够把精力集中在代码的编写上而不是在源代码的组织上。

《嵌入式 Linux C 语言应用程序设计(修订版)》——2.1 嵌入式Linux下C语言概述...相关推荐

  1. c语言程序设计教学理念,微课程理念下C语言程序设计教学改革.doc

    微课程理念下C语言程序设计教学改革 微课程理念下C语言程序设计教学改革 摘 要 针对高职院校学生学业素质不高,普遍认为C语言程序设计课程难懂.难学的现状,本文结合目前的研究热点"微课程&qu ...

  2. 计算机辅助语言和计算语言学关系,建构主义理论视角下计算机辅助语言学习环境对留学生学习汉语动机的影响——以广西大学泰国留学生为例-语言学及应用语言学专业论文.docx...

    下,学习动机是否有所提高,还有待进一步的研究.在相关理论和英语实践研究成果的指导之下,笔者通过调查问卷.访 下,学习动机是否有所提高,还有待进一步的研究. 在相关理论和英语实践研究成果的指导之下,笔者 ...

  3. c语言趣味教学题目及答案,C语言趣味程序设计-题目百例.doc

    C语言趣味程序设计-题目百例 Contest - 2011级C语言课程大作业Start Time: 2012-02-19 16:25:00 End Time: 2012-03-01 22:00:00C ...

  4. c语言计算器取百分数,c语言计算器程序设计包含加减乘除简单的函数运算

    c语言计算器程序设计包含加减乘除简单的函数运算 c语言计算器程序设计包含加减乘除简单的函数运算 人气:258 ℃时间:2020-03-28 13:19:41 优质解答 实用计算器之程序设计 [摘 要] ...

  5. 程序设计教程用c 语言编程,程序设计教程:用C/C++语言编程

    图书简介 本教材在作者20多年C/C++语言教学,特别是项目开发的基础上,站在初学者的角度,在注重基础知识学习的同时,以培养学生良好的编程规范意识和编程思想为重点精心编写,例程丰富,层次感强,非常适合 ...

  6. Linux下c语言的图形编程(转) curses.h 函式库

    这是转贴哈,最近想吧TC的图形编程搞到LINUX下面来,所以就对其有所研究了哦. http://tech.techweb.com.cn/viewthread.php?tid=181892 注明了转载, ...

  7. 趣味c语言题目,C语言趣味程序设计题目百例.doc

    C语言趣味程序设计题目百例 Contest - 2011级C语言课程大作业Start Time: 2012-02-19 16:25:00 End Time: 2012-03-01 22:00:00Cu ...

  8. c语言趣味程序设计过桥,C语言趣味程序设计–题目百例.doc

    C语言趣味程序设计–题目百例 Contest - 2011级C语言课程大作业Start Time: 2012-02-19 16:25:00 End Time: 2012-03-01 22:00:00C ...

  9. 学习Unix,可从事什么样的工作(2)《精通Unix下C语言与项目实践》读书笔记(4)...

    <精通Unix下C语言编程与项目实践>读书笔记(new) 文章试读 不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八的 ...

  10. 嵌入式系统设计师学习笔记二十八:嵌入式程序设计③——高级程序设计语言

    嵌入式系统设计师学习笔记二十八:嵌入式程序设计③--高级程序设计语言 解释程序和编译程序 编译器的工作阶段示意图 语法错误:非法字符,关键字或标识符拼写错误 语法错误:语法结构出错,if--endif ...

最新文章

  1. 什么是python第三方库
  2. “AI下乡”:华为和袁隆平一起种海水稻,欲改造1亿亩良田
  3. 【思维导图-索引篇】搞定数据库索引就是这么简单
  4. 汇编实验4.1文件代号下的文件管理中为什么buf_size为80而buf可以容纳200个字节,矛盾吗?(不矛盾)
  5. 如何在Linux系统上自动执行任务
  6. ROS与Arduino学习(六)Logging日志
  7. 恒驰机器人_2545台机器人,1分钟造1辆车,恒大许家印的智能造车工厂首次曝光...
  8. 搭建大数据开发环境-Hadoop篇
  9. scala可变长度参数(一)
  10. post 和 get 网站
  11. linux文件复制和移动
  12. mysql创建用户并授权语句_MySQL创建用户与授权
  13. .net是什么域名?域名注册需要实名制吗?
  14. 编码原则 之 Separation of Concerns
  15. spa项目开发之tab页实现
  16. css炫酷标题,炫酷 CSS 背景效果的 10 个代码片段
  17. 厦门市各中巴线路途经站点
  18. 抽奖随机滚动_原来抽奖不是凭运气!两个技巧,让你在抽奖环节独占鳌头
  19. AS怎么找回不小心 删除的layout文件
  20. JavaWeb新闻发布系统案例08——完结篇

热门文章

  1. paip.提高用户体验----增添开始菜单类似360小助手按钮总结 (补充c925)
  2. 关于FLEX中找不到目标对象或通道未定义错误
  3. (转)Rust: 在vscode配置 Rust 开发环境
  4. 从毛坯房到精装修,阿里云企业IT治理样板间助力云上管控和治理
  5. 新兴IT企业特斯拉(一)
  6. 江湖传说——阿里巴巴土话102句完整版
  7. Linux基金会宣布成立Ceph基金会
  8. 2018中国十大开源云领军企业评选,等你报名!
  9. android ndk串口触屏,Aandroid NDK开发之串口控制
  10. 【路径规划】基于matalb穷举法机器人栅格地图避障路径规划【含Matlab源码 1675期】