嵌入式Linux入门11:应用层编程应用和分类
本文针对Linux系统环境应用层的编程应用做一个概述。
有的人把Linux底层和应用层严格区分对待,在一定程度上是没有错误的。但很多时候需要进行交叉学习。比如,编写了底层驱动程序,如何验证这个驱动能正常工作呢?这时就需要动手写应用层程序了。当然,这个例子不是十分严谨,实际工作中,依然是要有所侧重的。
本文不会详细介绍Linux应用层的编译。仅是对此进行一个概述,并提供指导方法。真实要掌握,还是需要自己花时间动手编写代码,而不能只靠看几篇文章,读几本书。
首先要明确编码环境,很多书籍、帖子,都在介绍如何将emacs、vim打造成一个强大的编辑器,许多年前,笔者亦好此道,然而,除了花时间在搞各种配置之外,好像对编程本身没起多大作用。若干年后,笔者的编程环境如下:
虚拟机Linux+samba共享,Windows映射磁盘,使用notepad++(简单程序)、vs code、source insight等编辑器来编写代码。生产服务器中,如果简单的代码(或脚本),则使用vim来修改,如果复杂的,则在本地修改调试,再通过git上传仓库,在服务器更新代码。
值得一提的是,每个人的经验、背景知识不同,所以别人的经验始终是别人的经验,只能做参考,然后以此为依据找到适合自己的方法。
一、应用层编程分类
1、文件IO操作。
2、进程控制、进程间通信、多线程操作
3、信号处理
4、网络编程
5、串口编程
上面的分类,不仅是Linux(或嵌入式Linux)中会遇到,Windows系统也有,而且各不相同,比如网络编程,虽然都是socket,但因为两大系统实现方式不同,使用上亦有不同。
另外,还有一类是标准库,如printf/scanf系函数、内存操作(mem*系函数)、字符串操作(str*系函数)、数学库,等等,这些函数几乎在所有系统上通用。
二、指导方法
1、linux自带手册:man
对于linux命令或函数不熟悉的,可以在终端输入man xxx来查看帮助文档。比如查看open函数,输入man 2 open。
2、c/c++在线参考:http://www.cplusplus.com/
这个网站上包括了C、C++标准接口函数的说明、示例。对于STL也有详实说明。总体上介绍比较全面,建议收藏备用。
3、积累代码库
最好将一些常用的功能封装为库函数的形式。比如串口,网络,写读文件,等等。注意,库函数与测试使用的函数目的不同,写法也有不同,库函数中一般不调用打印函数、退出函数,等等,另外建议减少对参数的判断,以减轻代码体积。
实际上,在学习、工作中使用到的功能,都建议封装成库函数,以笔者为例,有YUV转换、BMP/JPEG读写、XML读写,等等代码库。积少成多,终有一天,这些库函数会派上用场。
推荐书籍:
入门篇:
《Linux C 编程一站式学习》
《Linux C从入门到精通》
《Linux C编程从初学到精通 》
《Linux C编程实战》
《嵌入式linux应用开发完全手册》 (该书对嵌入式Linux开发整体都有讲述,一书以看窥全貌,入门适用)
linux网络编程篇:
《UNIX网络编程》
《UNIX环境高级编程》
C/C++提高篇:
《C陷阱与缺陷》
《C专家编程》
《C和指》
《C++沉思录》
《C/C++深层探索》
《Effective C++中文版》
《提高c++性能的编程技术》
《0 bug:C/C++商用工程之道》 (这本书网络有一定争论,笔者认为有部分的确有可取之处,请辩证看待)
李迟 2017.9.04 夜
嵌入式Linux入门11:应用层编程应用和分类相关推荐
- 嵌入式Linux入门12:编程规范
作为一名软件工程师,日常与代码打交道,免不了接触到编程规范.而编程规范,可谓是各式各样,不同系统有不同风格,不同公司有不同风格.就笔者经历而言,在学生年代学习单片机编程时已经开始建立自己的" ...
- 嵌入式Linux入门13:应用层调试
本文主要介绍应用程序的调试方法. 很多网友问我怎么调试内核,怎么查找代码bug.其实我的方法不多.一是靠经验,掉入的坑多了,做笔记回顾,自然就有了经验.二是靠printf/printk大法跟踪.三是利 ...
- 嵌入式 Linux 入门(十、Linux 下的 C 编程)
嵌入式 Linux 入门第十课,聊聊 linux 下的 C 编程...... 矜辰所致 插一句,问题讨论群在文末的推广,以后大家提问可以在群中,即便我不在也能看到历史记录. 目录 前言 一.C 语言编 ...
- 嵌入式 Linux 入门(五、Shell 脚本编程上:认识 Shell 脚本)
大家好,是矜辰所致,嵌入式 Linux入 门第五课,本课开始简单学习一下 Shell 脚本编程. 目录 前言 一.Shell 脚本基础说明 1.1 什么是 Shell 脚本 1.2 Shell 脚本的 ...
- 分享:嵌入式Linux入门学习指导
很多嵌入式linux初学者对嵌入式linux学习十分迷茫,不知道该怎么一步步学习,嵌入式linux学习方法,学习的流程步骤以及学习过程中需要看哪些好的书籍.下面凌阳教育嵌入式培训网就为大家整理的嵌入式 ...
- 嵌入式linux入门学习规划
嵌入式linux入门学习规划 如何理解嵌入式系统 ◆嵌入式系统是面向用户.面向产品.面向应用的,它必须与具体应用相结合才会具有生命力.才更具有优势.因此可以这样理解上述三个面向的含义,即嵌入式系统是与 ...
- 嵌入式linux怎么入门,嵌入式linux入门六步走
学习嵌入式linux怎样才能快速入门?这是很多出来华清远见参加嵌入式培训学员爱问的问题,这里做一个总结供大家参考,嵌入式linux入门可以概括为六步走: 第一步:学习基本的裸机编程 对于学硬件的人而言 ...
- 嵌入式Linux入门经典笔记
史上最牛的Linux内核学习方法论 点击下载 我的arm_linux移植笔记 点击下载 S3C2440完全开发流程 点击下载 Linux系统命令及其使用详解完整版 点击 ...
- 嵌入式linux入门3-3-套接字
个人博客对应地址:嵌入式linux入门3-3-套接字 socket主要函数 创建套接字 socket,我们一般翻译为套接字,其是一种通讯接口,允许位于不同计算机之间的线程通过网络进行通讯,我们可以使用 ...
最新文章
- 重磅推荐:保姆级Java技术图谱!够学到元宵节了,赶紧收藏!
- 5G时代到来,SD-WAN如何发展?-Vecloud微云
- Java中的volatile关键字
- MySQL安装与基本使用
- 【物联网】 Ubuntu中生成交叉编译器xtensa-lx106-elf
- 第一节:复习委托,并且通过委托的异步调用开启一个新线程和异步回调、异步等待。
- MySQL表结构优化
- 经典算法研究系列:七、深入浅出遗传算法,透析GA本质【转载】
- JavaScript知识(二)
- 机器学习基础算法15-回归实例-线性回归、Ridge回归、LASSO、ElasticNet的高阶参数与过拟合以及TSS>=ESS+RSS代码验证
- openstack使用openvswitch实现vxlan组网
- Mutex(互斥锁)
- 【三维路径规划】基于matlab Nsga-2算法求解无人机三维路径规划【含Matlab源码 1455期】
- CAd常用的系统变量
- cad 打开硬件加速卡_CAD:“你的图纸缺少shx字体!”“不存在的!”
- excel 第2讲:单元格格式设置
- Excel知识技能汇总
- 影子系统、还原精灵、冰点还原优缺点比较
- 美的智能SPA微气泡可视化冲牙器体验
- Google Map 开发笔记——基础篇(Javascript )
热门文章
- 马化腾不“爱”刘强东了?
- 神秘买家6亿元拍走,乐视大厦究竟归谁?
- 马斯克疯狂套现,特斯拉市值一周蒸发1895亿美元!网友:丝毫不影响首富位置...
- 阿里巴巴:第四财季净亏损76.54亿元,主要由于反垄断法罚款
- 黄光裕回应与京东、拼多多竞争:谁也灭不了谁 不排除合作的可能性
- iPhone 13有搞头,经典功能或将回归!
- 赵明:荣耀将推超级旗舰 有属于自己的P和Mate系列
- 京东股价创新高:市值首次突破千亿美元 !
- “李国庆午餐1小时”12.94万成交!同时对家暴非常自责
- 罗永浩签约抖音后,带货首秀或将献给小米,你看好这笔生意吗?