Linux知识库
文章平均质量分 82
Linux基础知识
码农爱学习
码农爱学习,专注嵌入式~
展开
-
Linux中CMake的使用2-同目录下多个源文件
上篇文章介绍了编写CMakeLists.txt的最基础用法——只有一个源文件的情况。本篇继续介绍,在同一目录下有多个源文件时如何编写CMakeLists.txt。1 一组文件的情况先来看下面这种情况:除了main.c以外,只多出来一组源文件(1个.c文件+1个.h文件)。1.1 编写C源文件以一个简单的两数相加为例,代码如下:main.c#include <stdio.h>#include "sum.h"int main(void){ int a = 1;原创 2022-02-12 22:31:46 · 1721 阅读 · 0 评论 -
Linux中CMake的使用1-单个源文件
1 引言linux中进行C/C++开发,一般都是先用编辑器写好代码,然后使用gcc工具来编译程序。文件数量不多的工程,可以直接敲gcc命令进行编译。对于文件较多的工程,就要使用Makefile来管理代码的编译了。而手动编写Makefile其实也是具有一定的难度的,更方便的方式是使用更易编写CMake来自动生成Makefile。2 Linux中安装CMake这里插一句,在Window系统中,许多人也用过CMake,它可以配合集成开发环境如Visual Studio,通过图形化的操作界面,操作CMak原创 2022-02-12 22:31:01 · 1053 阅读 · 0 评论 -
VirtualBox虚拟机Ubuntu扩容记
在VirtualBox中使用ubuntu系统,一开始分配的硬盘空间太小,使用一段时间后发现空间不够用了怎么办?本篇记录自己在使用VirtualBox中的ubuntu系统时,对ubuntu系统的进行磁盘扩容的实际操作记录。0 起因之前在VirtualBox中安装了ubuntu虚拟机,分配了29G的磁盘容量,最近发现不够用了,就想着如何给它扩充容量。VirtualBox中,ubuntu虚拟机系统是保存在一个vdi文件中,而我之前又是单独给这个vdi文件在Windows系统中分配了一个30G的磁盘,.原创 2022-02-12 22:27:37 · 3812 阅读 · 1 评论 -
Linux与Windows间文件互传之TFTP方式
Linux端安装tftp服务安装xinetd,tftp 和tftpdsudo apt-get install xinetdsudo apt-get install tftp tftpd配置/etc/xinetd.d/tftp文件新建一个文件:#sudo vim /etc/xinetd.d/tftp写入如下内容service tftp{ socket_type = dgram protocol = udp wa原创 2020-09-26 22:11:17 · 1597 阅读 · 0 评论 -
Linux-makefile使用基础
makefile就像一个Bash脚本,其中也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。例子源码sin_value.c#include <stdio.h>#include <math.h>#define pi 3.14159float angle;void sin_value(void){ float value; value = sin原创 2020-06-12 23:13:28 · 630 阅读 · 0 评论 -
Linux-GDB调试
GDB简介GDB(GNU Debugger)是Linux下一款C/C++程序调试工具,通过在命令行中执行相应的命令实现程序的调试,使用GDB时只需要在shell中输入gdb命令或gdb filename(filename为可执行程序文件名)即可进入GDB调试环境。GDB主要有以下功能:设置断点单步调试查看变量的值动态改变程序的执行环境分析崩溃程序产生的core文件GDB常用命令命令简写含义file -装入待调试的可执行文件runr执行程序(至结束)原创 2020-06-12 23:12:27 · 409 阅读 · 0 评论 -
Linux-gcc使用基础
gcc 编译器是 Linux 下默认的 C/C++ 编译器,大部分 Linux 发行版中都是默认安装的。gcc 编译器通常以 Linux 命令的形式在终端(Shell/Bash)中使用。单一源文件最基础用法hello.c代码如下:#include <stdio.h>int main(void){ printf("Hello World!\n");}使用gcc编译:gcc hello.c使用ls命令查看当前目录,多出一个a.out可执行文件,运行:./a.out原创 2020-06-12 23:11:34 · 383 阅读 · 0 评论 -
Linux进程间通信详解(七) —— socket套接字基础
套接字 socket是操作系统内核的一个数据结构,它是网络中节点进行相互通信的门户。网络编程实际上也可以称作套接字编程。套接字有3种类型:流式套接字,即TCP套接字,用SOCK_STREAM表示数据报套接字,即UDP套接字(或称无连接套接字),用SOCK_DGRAM表示原始套接字,用SOCK_RAM表示本文主要分析TCP套接字和UDP套接字。套接字地址结构由网络地址和端口号组成,如下图:ip地址端口号10.92.20.160套接字:10.92.20.160 15001500端口号概原创 2020-05-25 22:44:14 · 777 阅读 · 0 评论 -
Linux进程间通信详解(六) —— 信号种类及函数
主要介绍:Linux中的信号种类信号操作的相关函数Linux中的信号种类信号是一种进程间通信的方法,应用于异步事件的处理。信号的实质是一种软中断。使用kill -l可以查看Linux系统中的所有信号,如下:deeplearning@deeplearning:~$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS原创 2020-05-25 22:41:15 · 1032 阅读 · 0 评论 -
Linux进程间通信详解(五) —— 信号量及函数
信号量的概念信号量,或称信号灯,其原理是一种数据操作锁的概念,本身不具备数据交换的功能,它负责协调各个进程,保证保证两个或多个关键代码段不被并发调用,确保公共资源的合理使用。信号量分为单值和多值两种。在信号的实际应用中,是不能只定义一个信号量的,而只能定义一个信号量集,其中包含一组信号量,同一信号量集中的信号量使用同一个引用ID,这样的设置是为了多个资源或同步操作的需要。每个信号量集都有一个与之对应的结构,其中记录了信号量集的各种信息,该结构定义为:struct semid_ds{ str原创 2020-05-25 22:39:34 · 576 阅读 · 0 评论 -
Linux进程间通信详解(四) —— 共享内存及函数
共享内存的概念共享内存是指多个进程可以把一段内存共同的内存映射到自己的进程空间中,从而实现数据的共享和传输,它是存在与内核级别的一种资源,是所有进程间通信中方式最快的一种。在shell环境下可以使用ipcs查看当前系统IPC中的状态,例如当前的电脑中:$ ipcs------ Message Queues --------key msqid owner perms used-bytes messages------ Shared Memory原创 2020-05-25 22:36:55 · 791 阅读 · 0 评论 -
Linux进程间通信详解(三) —— 消息队列及函数
消息队列的概念消息队列就是一个消息的链表,每个消息队列都有一个队列头,用结构struct msg_queue来描述。队列头中包含了该队列的大量信息,包括消息队列的键值、用户ID、组ID、消息数目、读写进程ID等。其定义如下: struct msg_queue{ struct ipc_perm q_perm; time_t q_stime; // last msgsnd time time_t q_rtime; // last msgrcv ti原创 2020-05-25 22:35:31 · 886 阅读 · 0 评论 -
Linux进程间通信详解(二) —— 命名管道及函数
管道(pipe)应用的一大局限是没有名字,只能用于具有亲缘关系进程之间的通信。而命名管道,也称FIFO,实质是一种文件类型,通过FIFO可以用于任何两个进程间的通信。命名管道的创建命令方式在shell中可以使用mkfifo命令创建一个命名管道,格式为:mkfifo [option] name其中option选项用于选择创建FIFO的模式,使用形式为-m mode,mode为八进制模式,创建示例:mkfifo -m 666 myfifo创建之后可以在当前文件间看到新建的文件。函数方式FI原创 2020-05-25 22:33:44 · 595 阅读 · 0 评论 -
Linux进程间通信详解(一) —— 匿名管道及实例
匿名管道,也称管道,是Linux下最常见的进程间通信方式之一。匿名管道在系统中没有实名,它只是进程的一种资源,会随着进程的结束而被系统清除。管道的创建与关闭Linux中使用pipe()函数创建一个匿名管道,其函数原型为:#include <unistd.h>int pipe(int fd[2]);创建成功返回0,出错返回1。参数fd[2]是一个长度为2的文件描述符数组,fd[1]是写入端的文件描述符,fd[0]是读出端的文件描述符。可以使用文件I/O函数read()和write(原创 2020-05-25 22:32:06 · 465 阅读 · 0 评论 -
Linux进程间通信(IPC)若干方式
本文主要介绍进程间通信(IPC,Inter Process Communication)的一些方式,包括:管道(管道/匿名管道,命名管道/FIFO)消息队列/报文队列共享内存信号量/信号灯信号/软中断套接字/socket管道包括管道(Pipe)与命名管道(named pipe)。管道/匿名管道管道(Pipe),也称匿名管道,是Linux下最常见的进程间通信的方式之一,它是在两个进程之间实现一个数据流通的通道。优点在于简单易用,缺点在于功能简单,有许多限制。匿名管道在系统中是没有实名原创 2020-05-25 22:27:47 · 318 阅读 · 0 评论 -
Linux进程控制
Linux进程简介进程是操作系统中的一个重要概念,它是一个程序的一次执行过程,程序是进程的一种静态描述,系统中运行的每一个程序都是在它的进程中运行的。进程4要素要有一段程序供该进程运行进程专用的系统堆栈空间进程控制块(PCB),具体实现是task_struct结构有独立的存储空间Linux系统中所有的进程是相互联系的,除了初始化进程外,所有进程都有一个父进程。新的进程不是被创建,而是被复制,或是从以前的进程复制而来。Linux中所有的进程都是由一个进程号为1的init进程衍生而来的。L原创 2020-05-24 22:43:57 · 514 阅读 · 0 评论 -
Bash基础(二)
主要内容:逻辑判断:test关键字选择结构:if-else, case循环结构:while-do, for逻辑判断bash不仅可以进行数值运算,通过test关键字还可以进行逻辑判断。数值大小的判断例如判断3是否大于2的大小:test 3 -gt 2; echo $?0注意:判断成立,返回0,不成立返回1。参数含义助记-gt大于greater than-lt小于less than-eq等于equal-ne不等于not equ原创 2020-05-24 22:41:40 · 344 阅读 · 0 评论 -
Bash基础(一)
介绍Bash之前首先介绍Shell,shell是一个程序,可以称之为壳程序,用于用户与操作系统进行交互。用来区别与核,相当于是一个命令解析器,Shell有很多中,这里列出其中几种 :Bourne SHell(sh)Bourne Again SHell(bash)C SHell(csh)KornSHell(ksh)zsh各个shell的功能都差不太多,在某些语法的下达下面有些区别,Linux预设就是bash。简单点说,直接把shell和bash先理解为一个东西好了,就是Linux中的那个终端原创 2020-05-24 22:40:46 · 1314 阅读 · 0 评论 -
Linux命令行基础操作-常用命令
文件/目录类注:目录或称文件夹。新建文件touch xxxfile新建xxxfile文件。新建目录mkdir xxxdir新建xxxdir目录mkdir /home/workdir 在/home目录下创建workdir目录。mkdir -p /home/workdir/dir1/dir2 连续创建,若中间目录不存在则强制创建。查看文件/目录ls显示当前目录中的文件与目录(不包含隐藏文件)。ls -a 可以显示隐藏文件。ls -l 显示详细信息。ls -al 包含-a原创 2020-05-24 22:37:06 · 752 阅读 · 0 评论