本文针对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:应用层编程应用和分类相关推荐

  1. 嵌入式Linux入门12:编程规范

    作为一名软件工程师,日常与代码打交道,免不了接触到编程规范.而编程规范,可谓是各式各样,不同系统有不同风格,不同公司有不同风格.就笔者经历而言,在学生年代学习单片机编程时已经开始建立自己的" ...

  2. 嵌入式Linux入门13:应用层调试

    本文主要介绍应用程序的调试方法. 很多网友问我怎么调试内核,怎么查找代码bug.其实我的方法不多.一是靠经验,掉入的坑多了,做笔记回顾,自然就有了经验.二是靠printf/printk大法跟踪.三是利 ...

  3. 嵌入式 Linux 入门(十、Linux 下的 C 编程)

    嵌入式 Linux 入门第十课,聊聊 linux 下的 C 编程...... 矜辰所致 插一句,问题讨论群在文末的推广,以后大家提问可以在群中,即便我不在也能看到历史记录. 目录 前言 一.C 语言编 ...

  4. 嵌入式 Linux 入门(五、Shell 脚本编程上:认识 Shell 脚本)

    大家好,是矜辰所致,嵌入式 Linux入 门第五课,本课开始简单学习一下 Shell 脚本编程. 目录 前言 一.Shell 脚本基础说明 1.1 什么是 Shell 脚本 1.2 Shell 脚本的 ...

  5. 分享:嵌入式Linux入门学习指导

    很多嵌入式linux初学者对嵌入式linux学习十分迷茫,不知道该怎么一步步学习,嵌入式linux学习方法,学习的流程步骤以及学习过程中需要看哪些好的书籍.下面凌阳教育嵌入式培训网就为大家整理的嵌入式 ...

  6. 嵌入式linux入门学习规划

    嵌入式linux入门学习规划 如何理解嵌入式系统 ◆嵌入式系统是面向用户.面向产品.面向应用的,它必须与具体应用相结合才会具有生命力.才更具有优势.因此可以这样理解上述三个面向的含义,即嵌入式系统是与 ...

  7. 嵌入式linux怎么入门,嵌入式linux入门六步走

    学习嵌入式linux怎样才能快速入门?这是很多出来华清远见参加嵌入式培训学员爱问的问题,这里做一个总结供大家参考,嵌入式linux入门可以概括为六步走: 第一步:学习基本的裸机编程 对于学硬件的人而言 ...

  8. 嵌入式Linux入门经典笔记

    史上最牛的Linux内核学习方法论     点击下载 我的arm_linux移植笔记     点击下载 S3C2440完全开发流程     点击下载 Linux系统命令及其使用详解完整版     点击 ...

  9. 嵌入式linux入门3-3-套接字

    个人博客对应地址:嵌入式linux入门3-3-套接字 socket主要函数 创建套接字 socket,我们一般翻译为套接字,其是一种通讯接口,允许位于不同计算机之间的线程通过网络进行通讯,我们可以使用 ...

最新文章

  1. 重磅推荐:保姆级Java技术图谱!够学到元宵节了,赶紧收藏!
  2. 5G时代到来,SD-WAN如何发展?-Vecloud微云
  3. Java中的volatile关键字
  4. MySQL安装与基本使用
  5. 【物联网】 Ubuntu中生成交叉编译器xtensa-lx106-elf
  6. 第一节:复习委托,并且通过委托的异步调用开启一个新线程和异步回调、异步等待。
  7. MySQL表结构优化
  8. 经典算法研究系列:七、深入浅出遗传算法,透析GA本质【转载】
  9. JavaScript知识(二)
  10. 机器学习基础算法15-回归实例-线性回归、Ridge回归、LASSO、ElasticNet的高阶参数与过拟合以及TSS>=ESS+RSS代码验证
  11. openstack使用openvswitch实现vxlan组网
  12. Mutex(互斥锁)
  13. 【三维路径规划】基于matlab Nsga-2算法求解无人机三维路径规划【含Matlab源码 1455期】
  14. CAd常用的系统变量
  15. cad 打开硬件加速卡_CAD:“你的图纸缺少shx字体!”“不存在的!”
  16. excel 第2讲:单元格格式设置
  17. Excel知识技能汇总
  18. 影子系统、还原精灵、冰点还原优缺点比较
  19. 美的智能SPA微气泡可视化冲牙器体验
  20. Google Map 开发笔记——基础篇(Javascript )

热门文章

  1. 马化腾不“爱”刘强东了?
  2. 神秘买家6亿元拍走,乐视大厦究竟归谁?
  3. 马斯克疯狂套现,特斯拉市值一周蒸发1895亿美元!网友:丝毫不影响首富位置...
  4. 阿里巴巴:第四财季净亏损76.54亿元,主要由于反垄断法罚款
  5. 黄光裕回应与京东、拼多多竞争:谁也灭不了谁 不排除合作的可能性
  6. iPhone 13有搞头,经典功能或将回归!
  7. 赵明:荣耀将推超级旗舰 有属于自己的P和Mate系列
  8. 京东股价创新高:市值首次突破千亿美元 !
  9. “李国庆午餐1小时”12.94万成交!同时对家暴非常自责
  10. 罗永浩签约抖音后,带货首秀或将献给小米,你看好这笔生意吗?