主线剧情08-Linux应用编程-学习总结备查

 

Linux 应用编程- 学习总结备查

记 Linux 应用 相关的基本概念和流程,便于 备查 / 复习。p.s Linux 系统性的入门与学习的 路线和途径 推荐去看 【主线剧情 0.0】Linux 学习资源大综合 - 知乎 (zhihu.com)CSDN 链接) 里面的 !学习来源!书籍推荐Linux 应用编程内容补充这几节!

注:在 Github 上的原版文章日后可能会更新,但这里不会跟进。文章的 Gitee 仓库地址,Gitee 访问更流畅


目录

Linux 应用编程- 学习总结备查

地基

① Linux 开发 基本工具的使用

② 编译 / 交叉编译 工具的获取

③ Linux 系统调用(各层调用关系)

④ Linux 一般开发流程

⑤ 主机端 与 嵌入式 Linux 板端 相互传文件

⑥ 期待美好发生

开发

参考源

通过手册的 查看 API 详细描述参考

通过命令行的 查看命令、API 描述参考

Linux 应用开发 / 学习 / 备查 参考源

标准 API 富集

Linux 应用的基本编程思想


地基

① Linux 开发 基本工具的使用

代码编辑:Vim、gedit(ubuntu 下)。编译工具:gcc,make,cmake(生成 makefile),gdb。项目管理:git。文本编辑:Windows 端的如 source insight、Notepad、VsCode 等;Linux 端的如 gedit(Ubuntu 端)、VsCode 等。

主线剧情02-ARM-Linux基础学习记录_Real-Staok的博客-CSDN博客 里面的 Linux 下的开发 一节的内容。

② 编译 / 交叉编译 工具的获取

主线剧情02-ARM-Linux基础学习记录_Real-Staok的博客-CSDN博客 里面的 获取交叉编译工具链 一节的内容。其中 举出三个方法:用开发板厂家提供的 SDK 里的工具链、ARM 官网下载 合适的工具链、使用 Linaro GCC 编译器。

另外,在构建 rootfs 时候使用 buildroot 或 yocto 时候可以构建 交叉编译器。

③ Linux 系统调用(各层调用关系)

④ Linux 一般开发流程

主线剧情02-ARM-Linux基础学习记录_Real-Staok的博客-CSDN博客 里面的 Linux 一般开发步骤 一节的内容:

Bootloader、Linux 内核、根文件系统、APP 等等软件,需要在 Ubuntu 中编译;但是阅读、修改这些源码时,在 Windows 下会比较方便。

所以工作日常开发流程如下:

PC 端,使用 source insight 编、改源码 —>传—> Ubuntu 端,对修改好的源码进行编译、制作 —>下载—> 嵌入式板端,在 Linux 板子上运行、测试。

分步来说就是:

在 Windows 上阅读、研究、修改,修改后,上传(推荐 FileZilla)到 Ubuntu ;

在 Ubuntu 上编译、制作(推荐使用 MobaXterm 通过 SSH 远程登陆 Ubuntu);

把制作好的可执行程序下载到开发板上运行、测试。

u-boot、Linux内核,在 Windows 和 Ubuntu 各存一份。根文件系统使用 buildroot (或 Busybox 或 Yocto)制作,它无需放在 Windows 上。

⑤ 主机端 与 嵌入式 Linux 板端 相互传文件

主线剧情02-ARM-Linux基础学习记录_Real-Staok的博客-CSDN博客 里面的 PC 与 嵌入式板 传输文件的方式汇总 一节的内容。这一块内容会只在 Github/Gitee 仓库内更新:

  • 网络传输:ETH / WiFi。通过 SSH、NFS、TFTP 等。

  • USB 传输:U 盘拷贝,芯片官方 配套的 USB 传输 / 烧写 工具。

  • 串口传输:rz / sz 命令。

⑥ 期待美好发生

这儿的能力是靠 多做项目、多积累经验,量变出质变。

开发

参考源

通过手册的 查看 API 详细描述参考

【规范】万字集大成的C编写规范_Real-Staok的博客-CSDN博客 中的 7 C 标准库的使用 一节内容,即 各种C标准库详解和用例,其中包括了 C/C++ 的常用标准库 的 API 使用的详细描述,还包括 Linux_C(glibc_man_cn)、POSIX-C 等的 API 的完整描述文档(包括中文),便于速查,其 仓库在 额外文档/各种C标准库详解和用例 · 瞰百/coding-style-and-more - 码云 - 开源中国 (gitee.com)Gituhb 仓库地址)。

其中包括文件如:C语言标准函数库速查.pdf、C语言函数大全语法着色版.pdf、Linux函数大全.chm、POSIX-C函数速查.chm 等等。

通过命令行的 查看命令、API 描述参考

help、man 和 info 命令。

  • help 只能用于查看某个命令的用法。

  • man 命令既可以查看命令的用法,还可以查看函数的详细介绍等等。

    (引自 百问网)

    比如想查看 open() 函数的用法时,可以直接执行 man open ,发现这不是想要内容时再执行 man 2 open

    在 man 命令中可以及时按“h”查看帮助信息了解快捷键。常用的快捷键是:

    • f 往前翻一页。

    • b 往后翻一页。

    • /<patten> 往前搜 patten 字符。

    • ?<patten> 往后搜。

  • info 命令会显示最全面的信息,一般 man 命令就够了,故 info 命令介绍 暂时略。

Linux 应用开发 / 学习 / 备查 参考源

标准 API 富集

这里就是日常用到的 API 的积累和整理,最详细、全面的 API 参考 见 上面 通过手册的 API 详细描述参考 一节。

日常用到的 标准 API 富集 单独放在了 【Linux 通用应用开发】仓库地址 GithubGitee)文件夹 里面,包括:

  • 文件 IO、字符流收发 和 字符串处理相关的 API 收集积累。

  • 一些 Shell 命令 API 收集积累。

  • 输入设备框架,读取驱动程序按照 input event 框架上传的信息。

  • 文件 IO 读写的基本四种机制(阻塞、非阻塞、poll/select 和 异步通知(通过信号机制))。

  • Socket TCP / UDP 编程。

  • 进程 和 线程 的设计和编程。包括 进程和线程的分配策略、进程和线程的 API 用法 等:

    • 进程 相关 API(fork()、exec、wait() 等等)。

    • 进程间通讯(管道、命名管道、信号、信号量、消息队列、共享内存、内存映射 和 套接字)。

    • pthread 线程编程库 相关 POSIX API(pthread_create()、(后面省略 “pthread_”)exit / cancel 和 join / tryjoin_np、self()、attr_setxxx() / attr_getxxx()、)。

    • 线程间通讯、同步的机制(锁机制(互斥锁、读写锁 和 自旋锁)、信号量机制、条件变量机制 和 信号(与 IPC 的信号使用上有区别))。

  • 串口收发编程、I2C编程。

    实质上就是对各种设备驱动文件 进行 open/read/write/ioctl/close 来配置和读写,有一些标准接口有标准的信息结构,因此有专门的 库,通过这些库来间接的 配置 和 读写设备驱动文件,比如 tslib、i2ctool 等等。

  • 等等其它,用时补充。比如 进程高级编程、内存管理、Linux 高并发编程 epoll 等等。

Linux 应用的基本编程思想

大的思想就是,主要对设备文件使用 read/write/ioctl 和 mmap,以下举例:

  • uart(ttyxxx)/i2c/spi设备文件,先用ioctl读出信息和写入配置,然后用read/write来接收和发送(涉及到四种机制:阻塞、非阻塞、poll/select、异步通知)。

  • 屏幕,名为fb的设备,通常用帧缓冲,mmap之后,对一块内存用指针直接进行读写,就是读屏和写屏。

  • 对于摄像头/图像/视频设备,名为videoxxx的设备,read就是读一帧图像/截图。

  • 音频设备,同样是read来录音,write就是播放(如果支持的话)。

对于不同的设备,read 和 write 的使用比较符合直觉,清楚这个编程模式后面看程序,思路就比较清晰。

再有就是各种高级编程,包括进程/线程以及其间的通讯/同步(需要大量实验和经验),网络编程,内存管理,高并发 epoll 等等。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值