![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux菜鸟之路
文章平均质量分 83
智小星
这个作者很懒,什么都没留下…
展开
-
使用BusyBox制作最小Linux根文件系统
一、Busybox简介 制作文件系统需要使用到Busybox工具。BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Linux 系统的自带的shell。 ...原创 2021-12-06 19:31:53 · 1906 阅读 · 0 评论 -
Makefile常用函数
在 Makefile 中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。 make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。原创 2022-01-13 16:34:31 · 205 阅读 · 0 评论 -
Makefile学习笔记
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个shell脚本一样,也可以执行操作系统的命令原创 2022-01-13 15:27:14 · 363 阅读 · 0 评论 -
Linux系统编程---用户空间与内核空间
一、基本概念Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。用户空间的内存映射采用段页式,而内核空间有自己的规则。(1)Linux内核地址空间划分通常32位Linux内核虚拟地址空间划分0~3G为用户空间,3~4G为内核空间(注意,内核可以使用的线性地址只有1G)。注意这里是32位内核地址空间...原创 2021-12-10 11:49:22 · 1928 阅读 · 0 评论 -
Linux驱动开发---杂项设备
一、基本概念Linux设备驱动类型:字符设备:字符设备是能够像字节流一样被访问的设备。 一般说来对硬件设备 IO 的操作可以归结为字符设备。 常见的字符设备有 led、 蜂鸣器、 串口、 键盘等; 块设备:块设备室通过内存缓冲区访问, 可以随机存取的设备, 一般性的理解就是存储介质类的设备。常见的字符设备有 U 盘、 TF 卡、 eMMC、 电脑硬盘、 光盘等等; 网络设备:可以和其它主机交换数据的设备。常见的以太网设备、WIFI、蓝牙等。杂项设备:杂项设备是字符设备的一种,可以自动生.原创 2021-12-09 15:25:10 · 1696 阅读 · 0 评论 -
Linux系统编程---信号量
一、基本概念 (1)信号量(Semaphore)信号量本质上是一个计数器(不设置全局变量是因为进程间是相互独立的,而这不一定能看到,看到也不能保证++引用计数为原子操作),用于多进程对共享数据对象的读取,它和管道有所不同,它不以传送数据为主要目的,它主要是用来保护共享资源(信号量也属于临界资源),使得资源在一个时刻只有一个进程独享。 (2)信号量的工作原理由于信号量只能进行两种操作等待和发送信号,即P(sv)和V(sv),他们的行为是这样的:...原创 2021-12-03 16:00:17 · 764 阅读 · 0 评论 -
Linux系统编程---消息队列
一、基本概念消息队列,Unix的通信机制之一,可以理解为是一个存放消息(数据)容器。将消息写入消息队列,然后再从消息队列中取消息,一般来说是先进先出的顺序。消息队列本质上是位于内核空间的链表,链表的每个节点都是一条消息。每一条消息都有自己的消息类型,消息类型用整数来表示,而且必须大于 0。每种类型的消息都被对应的链表所维护。...原创 2021-12-03 11:22:24 · 1689 阅读 · 0 评论 -
linux系统编程---共享内存
一、基本概念共享内存是 Unix下的多进程之间的通信方法 ,这种方法通常用于一个程序的多进程间通信,实际上多个程序间也可以通过共享内存来传递信息。所谓共享内存就是使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。其他进程能把同一段共享内存段“连接到”他们自己的地址空间里去。所有进程都能访问共享内存中的地址。如果一个进程向这段共享内存写了数据,所做的改动...原创 2021-12-02 16:53:17 · 664 阅读 · 0 评论 -
Linux系统编程---信号通信
通过kill -l命令,可在shell下查看所有的信号类型,这里将linux信号列举处理。原创 2021-12-01 21:00:06 · 704 阅读 · 0 评论 -
linux系统编程---无名管道和有名管道
一、基本概念无名管道:无名管道是linux系统内核的特殊文件,用于进程之间的通信,无名管道相当于一个队列结构,fd[1]为写入端(入队),fd[0]为读出端(出队)。其中信息读出后即删除,再次读取时即为下一个信息。 有名管道:二、无名管道管道是创建在内存中的,进程结束空间释放,管道不复存在; 无名管道和有名管道都是半双工通信,实现双向通信需要建立两个管道; 无名管道是linux特殊文件; 无名管道只用于父子进程之间,有名管道可用于无亲缘关系的进程之间。(1)接口说明 ..原创 2021-12-01 16:27:51 · 1661 阅读 · 0 评论 -
linux系统编程---守护进程
一、基本概念守护进程:守护进程是一个在后台运行并且不受任何终端控制的进程。守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务。很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭。另一些只在需要的时候才启动,完成任务后就自动结束。 创建守护进程基本要求:1.必须作为init进程的子进程 2.不跟控制终端交互。二、创建步骤(1)创建子进程,终止父进程 (2)在子进程中创建新会话 (3)改变工作目录 (4)重设文件创建掩码 (5)关闭文件描述符.原创 2021-12-01 14:51:08 · 410 阅读 · 0 评论 -
linux系统编程---孤儿进程和僵尸进程
一、基本概念孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态的收集工作。 僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,释放进程控制块,那么子进程的进程描述符仍然保存在系统中,这种进程称之为僵尸进程。 二、问题及危害孤儿进程危害:孤儿进程是没有父进程的进程,孤儿进程会被init进程收养。每当出现..原创 2021-12-01 11:53:35 · 1244 阅读 · 0 评论 -
linux系统编程---进程的控制
一、进程的简介(1)什么是进程? 进程指的是正在运行的程序。(2)进程ID 每个进程都有一个唯一的标识符,既进程ID,简称pid。(3)进程间通信的方法管道通信:有名管道,无名管道 信号通信:信号的发送,信号的接收,信号的处理 IPC通信:共享内存,消息队列,信号灯 Socket通信二、进程的状态三、进程的控制 (1)进程的创建使用fork()函数可以创建新的进程,fork()函数返回值有三种情况:...原创 2021-11-30 20:00:31 · 545 阅读 · 0 评论 -
linux系统编程---静态库和动态库的制作
静态库和动态库的区别 静态库和动态库是两种共享程序代码的方式,它们的区别是:静态库在程序的链接阶段被复制到程序中,和程序运行的时候没有关系;动态库在链接阶段没有被复制到程序中,而是程序运行时由系统动态加载到内存中供程序调用。一、静态库的制作 1.静态库制作步骤:编写或准备库的源代码; 将源代码.c文件编译生成.o文件; 使用ar命令创建静态库。 2.首先回顾一下C语言代码编译的4个环节:步骤 作用 产物 指令 ...原创 2021-11-29 20:42:56 · 787 阅读 · 0 评论 -
Linux下tar压缩解压命令
tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到标准输出下面的参数-f是必须的-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。# tar -cf all.t原创 2021-10-08 14:14:20 · 18745 阅读 · 0 评论 -
系统调用I/O函数
一、open函数:打开一个文件#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>当文件存在时使用:int open(const char *pathname, int flags);当文件不存在时使用:int open(const char *pathname, int flags, mode_t mode);flags的取值及其含义 取值 含义 O_R原创 2021-09-22 23:40:26 · 128 阅读 · 0 评论 -
Linux 通过文件IO方式操作GPIO
一、GPIO sysfs interface接口要在应用层字节使用提供好的gpio的驱动,需要在Linux的内核编译前使用menuconfig,增加Linux的gpio驱动部分。device drivers -> gpio support ->/sys/class/gpio.....(sysfs interface)在应用层可以使用sysfs中的gpio子系统,gpio_operation通过/sys/文件接口操作IO端口GPIO到文件系统的映射控制GPIO的目录位于/s..原创 2021-02-24 20:07:51 · 1101 阅读 · 0 评论 -
SSH无法登入虚拟机
1. 开发环境虚拟机平台:VMware14 Pro操作系统:Ubuntu16.042. 实验现象通过ssh连接虚拟机的linux服务器,使用root用户直接访问,无法登入成功。一直反复提示输入密码界面。输入正确密码,反复出现如下界面:尝试登入普通用户,能够成功的连接上。3. 问题原因查看ssh的配置文件,发现配置文件中 root 用户禁止了密码登入,Pe...原创 2019-06-14 00:06:11 · 1963 阅读 · 1 评论 -
编辑器之神---Vim
Linux vi/vim所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是 vim 编辑器。vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。相关文章:史上最全Vim快捷键键位图 — 入门到进阶什么是 vim?Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转...转载 2019-06-13 23:12:11 · 506 阅读 · 0 评论 -
Linux基础命令使用
1、shell简介shell是操作系统的用户界面,提供了用户和内核进行交互操作的一种接口。shell实际上就是一个命令解释器,它接受、解释用户输入的命令并把它送到内核执行。shell作为命令语音,能交互地解释和执行用户输入的命令。作为程序设计语音,可以定义各种变量和参数、提供循环、分支等控制结构。2、用户管理安装初始化系统,默认没有启用root用户,若需要进行软件安装时,普通...原创 2019-05-25 23:41:37 · 203 阅读 · 0 评论 -
菜鸟在ubuntu下易犯的傻事
雄关漫道真如铁,而今迈步从头越。记录自己在linux学习过程中遇到的“难题”1.锁屏状态下,无法正常输入密码 开始以为密码无法正常输入是虚拟机的问题,后来发现数字密码可以正常输入,字母密码却不能输入,其原因是因为输入法的问题,锁屏后在中文输入法的情况下,输入字母将无法正常显示。所以当无法正常输入密码时,按下Ctrl+空格切换成英文输入法,即可登入系统。原创 2018-01-24 16:30:09 · 356 阅读 · 0 评论