linux之基础开发工具的应用(代码片段)

flyyyya flyyyya     2022-12-26     675

关键词:

一、Linux 软件包管理器 yum

什么是软件包

在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.
但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.
软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系.
yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上.

注意事项

使用前先查看是否联网
可以通过 ping 指令验证

ping www.baidu.com

查看软件包

通过 yum list 命令可以罗列出当前一共有哪些软件包. 由于包的数目可能非常之多, 这里我们需要使用 grep 命令只筛选出我们关注的包. 例如:

yum list | grep lrzsz

软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构.
“x86_64” 后缀表示64位系统的安装包, “i686” 后缀表示32位系统安装包. 选择包时要和系统匹配.
“el7” 表示操作系统发行版的版本. “el7” 表示的是 centos7/redhat7. “el6” 表示 centos6/redhat6.
最后一列, base 表示的是 “软件源” 的名称, 类似于 “小米应用商店”, “华为应用商店” 这样的概念.

如何安装软件

通过 yum, 我们可以通过很简单的一条命令完成 gcc 的安装

sudo yum install lrzsz

yum 会自动找到都有哪些软件包需要下载, 这时候敲 “y” 确认安装.
出现 “complete” 字样, 说明安装完成
注意事项:
安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成.
yum安装软件只能一个装完了再装另一个. 正在yum安装一个软件的过程中, 如果再尝试用yum安装另外一个软件, yum会报错。

如何卸载软件

sudo yum remove lrzsz

二、Linux编辑器-vim使用

1. vim的基本概念

解vim的三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
①正常/普通/命令模式(Normal mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
②插入模式(Insert mode)
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
③末行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入
命令模式:
shift+$,shift+`:锚点,左右定位
shift+g,gg,n+shift+g:上下定位
yy,p,nyy,np:拷贝粘贴
u:撤销
ctrl+u:回复刚刚的撤销
dd:删除光标所在行
ndd,dd+p:剪切
shift+~:大小写切换
w,b:按照“单词”为单位进行光标转换
x,nx:删除光标所在字符
X,nX:删除光标之前的字符,不包括光标所在位置
r,nr:下面的操作,直接替换当前光标所在的字符
shift+r®:进入替换模式
h、j、k、l:左下上右
低行模式:
set nu:调出行号
set nonu:取消行号
w,q,!:保存,退出,强制
:!cmd:不退出vim执行命令行命令
:vs filename:分屏
ctrl+w:光标在多屏幕下进行切换

三、Linux编译器-gcc/g++的使用

1. 背景知识

  1. 预处理(进行宏替换)
    预处理功能主要包括宏定义,文件包含,条件编译,去注释等。
    预处理指令是以#号开头的代码行。
    实例: gcc –E hello.c –o hello.i
    选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。
    选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序。
  2. 编译(生成汇编)
  3. 汇编(生成机器可识别代码)
  4. 连接(生成可执行文件或库文件)

2.函数库

函数库一般分为静态库和动态库两种。
静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也
就不再需要库文件了。其后缀名一般为“.a”
动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”,如前面所述的 libc.so.6 就是动态库。gcc 在编译时默认使用动态库。完成了链接之后,gcc 就可以生成可执行文件,如下所示 gcc hello.o –o hello
gcc默认生成的二进制程序,是动态链接的,这点可以通过 file 命令验证

3.gcc选项

-E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面
-S  编译到汇编语言不进行汇编和链接
-c  编译到目标代码
-o 文件输出到 文件
-static 此选项对生成的文件采用静态链接
-g 生成调试信息。GNU 调试器可利用该信息。
-shared 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.
-O0
-O1
-O2
-O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
-w  不生成任何警告信息。
-Wall 生成所有警告信息。

linux基础之minilinux制作(代码片段)

一、编译一个简单的linux步骤如下:#yumgroupinstall""DevelopmentTools""ServerPlatformDevelopment"-y    //安装开发包组#tarxflinux-3.10.65.tar.xz  //下载内核这里就不介绍了#cd/usr/src#ln-svlinux-3.10.15linux  #cdlinux#makehelp#makeallno 查看详情

linux设备驱动基础04之异步通知(代码片段)

一、基础简介使用阻塞/非阻塞方式读写设备驱动时,都需要应用程序主动发起,对于非阻塞方式来说还需通过poll函数不断轮询。这种情况下更好的解决方案是,设备驱动主动向应用程序发出通知,报告自己可以... 查看详情

linux基础之网络配置(代码片段)

Linux基础之网络配置一、查看网络配置1.查看网络接口状态2.查看网关路由信息3.查看dns信息二、ifconfig网络管理工具使用1.查看已激活网卡信息2.查看所有网卡(包括未激活)网卡信息3.设置网卡激活及禁用4.配置网卡IP地址... 查看详情

小白学习docker基础篇(代码片段)

系列文章:-小白学Docker之基础篇-小白学Docker之Compose-小白学Docker之SwarmPS:以下是个人作为新手小白学习docker的笔记总结1.docker是什么百科上的解释是这样的:Docker是一个开源的应用容器引擎,让开发者可以打包他... 查看详情

esp32基础应用之lvgl基础(代码片段)

文章目录1实验目的1.1参考文章2实验工具3准备工作3.1搭建ESP32开发环境3.2克隆lv_port_esp32工程4配置lv_port_esp32工程5实验验证6使用过程遇到的问题6.1触摸功能点击屏幕位置不对1实验目的本实验为使用ESP32实现LVGL(轻量级的嵌入... 查看详情

linux基础之iptablessnat和dnat(代码片段)

iptables要实现内网和外网通信,有两种方式:  nat:NetworkAddressTranslation,安全性,网络层+传输层  proxy:代理,应用层nat: SNAT:只修改请求报文的源地址DNAT:只修改请求报文的目标地址nat表:PREROUTTING:DNATOUTPUTPOSTROUTING:SNAT实例... 查看详情

docker容器之基础管理(代码片段)

Docker介绍是一种轻量级的“虚拟机”在Linux容器里运行应用的开源工具Docker与虚拟机的区别虚拟机是在一台物理机器上,利用虚拟化技术,虚拟出来多个操作系统,每个操作系统之间是隔离的。Docker是开源的应用容器引擎,依然... 查看详情

linux设备驱动基础03之阻塞与非阻塞io(代码片段)

一、基础简介在应用程序中读/写(read/write)设备节点时,比如dev/xxx,需要用到阻塞和非阻塞IO两种设备访问模式,在编写驱动时一定要考虑到阻塞和非阻塞。默认情况下,应用程序对设备驱动的读取方式时阻塞式的... 查看详情

android移动应用开发之制作动画基础(代码片段)

文章目录帧动画主要文件目录MainActivityframe.xmlactivity_main.xml运行补间动画主要文件目录MainActivityalpha.xmlrorate.xmlscale.xmltranslate.xmlactivity_main.xml运行属性动画主要文件目录MainActivityactivity_main.xml运行帧动画顾名思义,需要我们准... 查看详情

使用go语言交叉编译开发嵌入式linux应用程序(代码片段)

文章目录目的基础说明编译生成嵌入式Linux应用程序二进制文件瘦身与C语言混合进行开发总结目的Go语言非常适合用来开发存储空间不紧张的嵌入式Linux设备应用程序,可以在性能需求和开发速度上找到一个不错的平衡点。这... 查看详情

androidorm框架之activeandroid应用基础(代码片段)

ActiveAndroid作为轻量级的ORM框架,在快速开发中,使用很简单,满足大部分对数据库操作不复杂的应用。一,配置添加依赖build.gradle中添加:repositoriesmavenCentral()mavenurl"https://oss.sonatype.org/content/repositories/ 查看详情

自动化运维三贱客之ansible的安装和命令应用基础(代码片段)

ansible简介:ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible基本框架:ansible是基于模块工作... 查看详情

docker初学乍练之基础入门(代码片段)

一、Docker基础什么是容器?容器是软件的标准单元,它打包代码及其所有依赖项,以便应用程序能够快速、可靠地从一个计算环境运行到另一个计算环境。Docker容器映像是一个轻量级的独立可执行软件包,其中包括运行应用程序所需... 查看详情

linux设备驱动基础01之并发与竞态(代码片段)

一、基础概念Linux是个多任务操作系统,存在多个任务同时访问同一片内存区域的情况,可能会相互覆盖这段内存中的数据,最终造成内存数据混乱,严重的话会导致系统崩溃。驱动开发中要注意对共享资源的保... 查看详情

一起学spring之基础篇(代码片段)

本文主要讲解Spring的基础环境搭建以及演变由来,仅供学习分享使用,如有不足之处,还请指正。什么是Spring?Spring是一个开源框架,用来处理业务逻辑层和其他层之间的耦合问题。因此Spring将面向接口开发的思想贯穿整个系统... 查看详情

linux(debian7)操作基础之cpu频率调整linux系统cpu频率调整工具使用(代码片段)

在Linux中,内核的开发者定义了一套框架模型来完成CPU频率动态调整这一目的,它就是CPUFreq系统。如下为CPU的几种模式(governor参数):ondemand:系统默认的超频模式,按需调节,内核提供的功能,不是很强大,但有效实现了动... 查看详情

prism+materialdesign+entityframeworkcore+postgresqlwpf开发总结之基础篇(代码片段)

...文:Prism+MaterialDesign+EntityFrameworkCore+PostgresqlWPF开发总结之基础篇本着每天记录一点成长一点的原则,打算将目前完成的一个WPF项目相关的技术分享出来,供团队学习与总结。总共分三个部分:基础篇主要争对C#初学者,巩固C#常用... 查看详情

02_先学习输入系统应用编程(代码片段)

...在《Linux系列教程之快速入门》的《嵌入式Linux应用开发基础知识》的视 查看详情