欢迎来到Cefler的博客
博客主页:那个传说中的man的主页
个人专栏:题目解析
推荐文章:题目大解析3
概念
软件包是一种用于组织和分发软件的方式。它是一个包含了相关文件和元数据的压缩文件,通常以特定的格式打包。软件包可以包含可执行文件、库文件、配置文件、文档等。
软件包的主要目的是简化软件的安装、更新和卸载过程。通过将相关文件和依赖项打包在一起,软件包可以提供一种方便的方式来分发和管理软件。用户可以通过安装软件包来将软件部署到他们的计算机上,并且可以轻松地更新或卸载软件包。
软件包管理系统是用于管理软件包的工具集合。它提供了一组命令和功能,用于安装、更新、卸载和查询软>件包。常见的软件包管理系统包括APT(Advanced Package Tool)用于Debian和Ubuntu系统、YUM(Yellowdog Updater, Modified)用于CentOS和Fedora系统、Homebrew用于macOS系统等。
通过使用软件包,开发者可以更方便地分发他们的软件,并且用户可以更轻松地安装和管理软件。软件包的使用也有助于确保软件的版本一致性和依赖项的满足性。
注意:所谓安装,本质就是将可执行程序移动到某个目录下
在软件商店中,那些还没被下载的软件都放在哪里呢?
答:
软件商店中的软件通常存储在软件仓库或应用商店的服务器上。
当用户在软件商店中选择下载或安装应用程序时,软件商店客户端会与服务器进行通信,下载相应的软件包到用户的设备上。然后,用户可以通过安装软件包来将应用程序部署到他们的设备上。
需要注意的是,不同的操作系统和平台有不同的软件商店和软件仓库。例如,Android设备使用Google Play商店,iOS设备使用App Store,Linux系统使用各种发行版的软件仓库,而Windows系统使用Microsoft Store等。每个软件商店都有自己的服务器和软件包管理系统,用于存储和分发软件。
yum概念
yum是一种在基于RPM的Linux发行版上用于软件包管理的工具。它是Yellowdog Updater, Modified的缩写,最初是为了简化Red Hat Linux系统上的软件包管理而开发的。
yum的主要功能是从软件源(repositories)中下载、安装、更新和卸载软件包。它可以自动解决软件包之间的依赖关系,确保所需的依赖项也被正确安装。这使得安装和更新软件包变得更加简单和高效。
以下是yum的一些关键特点和用法:
软件源(repositories):yum使用软件源来获取软件包。软件源是存储软件包的服务器,可以是官方的发行版仓库或第三方仓库。yum可以配置多个软件源,以便从不同的源获取软件包。
安装软件包:使用yum install
更新软件包:使用yum update命令来更新系统中已安装的软件包到最新版本。yum会检查软件源中是否有可用的更新,并自动下载和安装更新的软件包。
卸载软件包:使用yum remove
搜索软件包:使用yum search 命令来搜索包含指定关键字的软件包。yum会列出匹配的软件包及其描述信息。
列出已安装的软件包:使用yum list命令来列出系统中已安装的所有软件包。可以使用yum list installed命令来只列出已安装的软件包。
清理缓存:使用yum clean 命令来清理yum缓存。常见的选项包括all(清理所有缓存)和metadata(清理仅限元数据缓存)。
以下是yum的一些常用选项:
install -y 可以取消交互询问是否下载
update:更新软件包。使用yum update命令来更新系统中已安装的软件包到最新版本。
remove:卸载软件包。使用yum remove
search:搜索软件包。使用yum search 命令来搜索包含指定关键字的软件包。
info:获取软件包信息。使用yum info
list:列出已安装的软件包。使用yum list命令来列出系统中已安装的所有软件包。
upgrade:升级系统。使用yum upgrade命令来升级系统中的所有软件包到最新版本。
clean:清理缓存。使用yum clean 命令来清理yum缓存,常见的选项包括all(清理所有缓存)和metadata(清理仅限元数据缓存)。
check-update:检查可用的更新。使用yum check-update命令来检查系统中是否有可用的软件包更新。
这些是一些常用的yum选项,可以根据需要使用不同的选项来执行相应的操作。可以通过yum --help命令来获取更详细的帮助信息和其他可用选项。
有时候,我们需要给Yum换源。
有时候需要给yum更换软件源的原因有以下几点:
加快下载速度:默认的软件源可能位于国外服务器,如果您的网络连接到该服务器的速度较慢,那么下载软件包可能会很慢。通过更换为国内的镜像源,可以加快下载速度,提高软件包的获取效率。
提高稳定性和可靠性:默认的软件源可能会因为服务器故障、网络问题或其他原因而不可用。通过选择可靠的镜像源,可以提高软件包的可用性和稳定性,确保您能够顺利地下载和安装软件包。
获取特定版本的软件包:默认的软件源可能只提供最新版本的软件包,而您可能需要获取特定版本的软件包。通过更换为其他源,您可以找到并下载所需版本的软件包。
解决依赖关系问题:有时候默认的软件源可能无法满足软件包之间的依赖关系,导致安装或更新软件包时出现问题。通过更换为其他源,您可能能够找到满足依赖关系的软件包,从而解决依赖问题。
如何换源?
要在CentOS 7上更换yum软件源,可以按照以下步骤进行操作:
打开终端或命令行界面。
以root用户或具有sudo权限的用户身份登录。
备份当前的yum源配置文件,以防需要恢复:
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
vi /etc/yum.repos.d/CentOS-Base.repo
在打开的文件中,注释掉(在行首添加#)所有以baseurl开头的行和以mirrorlist开头的行。
在文件中找到以baseurl开头的行和以mirrorlist开头的行,将其替换为新的yum源地址。可以从国内的镜像站点或其他可靠的源获取新的yum源地址。以下是一些常用的国内yum源地址:
例如,将baseurl行替换为阿里云的yum源地址:
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
保存并关闭文件。
清理yum缓存,以便下次使用新的yum源:
yum clean all
yum makecache
编辑器
编辑器是一种专门用于编辑文本文件的工具。它通常提供基本的文本编辑功能,如插入、删除、复制和粘贴等。编辑器可以用于编辑各种类型的文本文件,包括代码文件、配置文件和普通文本文件等。编辑器的设计目标是提供简洁、轻量级和高度可定制的编辑环境。一些常见的文本编辑器包括Vim、Emacs、Sublime Text和Notepad++等。
IDE
IDE是一个综合性的开发工具,旨在为开发人员提供一个集成的开发环境。IDE不仅提供了文本编辑功能,还集成了许多其他开发相关的功能,如调试器、编译器、自动完成、版本控制、项目管理和构建工具等。IDE通过将这些功能整合到一个统一的界面中,提供了更强大、高效和便捷的开发体验。常见的IDE包括Visual Studio、Eclipse、IntelliJ IDEA和PyCharm等。
进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:
vim 文件名 +n :可指定打开文件后,光标位于第n行
[正常模式]切换至[插入模式]
「h」、「j」、「k」、「l」
,分别控制光标左、下、上、右移一格n+shift+g == G:定位到代码的任意一行|最后一行
按「ctrl」+「b」:屏幕往“后”移动一页
按「ctrl」+「f」:屏幕往“前”移动一页
按「ctrl」+「u」:屏幕往“后”移动半页
按「ctrl」+「d」:屏幕往“前”移动半页
进入替换模式
,替换光标所到之处的字符,直到按下「ESC」键为止。❄️杂
列出行号
「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。
跳到文件中的某一行
「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,
再回车,就会跳到文章的第15行。
查找字符
「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按
「n」会往后寻找到您要的关键字为止。
「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直
按「n」会往前寻找到您要的关键字为止。
问题:/ 和 ?查找有和区别?操作实验一下
保存文件
「w」: 在冒号输入字母「w」就可以将文件保存起来
离开vim
「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。
「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
set /nu/nonu :显示行号/不显示行号
:!cmd 直接在不退出vim的前提下,进行查看,编译、运行的操作
/搜索关键字,n表示下一个
如何批量注释?
步骤如下:
1.ctrl+v:进入视图模式
2.运用j、k:划分待会需要注释的区间
3.shift+i == I: 进入insert模式,此时光标会移动到区间首行
4.//:对当前行进行注释
5.Esc:退出insert模式后,刚刚划分的注释区间将被注释
批量化删除注释:
1.ctrl+v:进入视图模式
2.运用j、k:划分待会需要删除注释的区间
3.d:即可删除
注:可以运用h、l,更改删除的宽度
n+j/k:可直接确定区分行数,就不用一个一个慢慢按了
在底行模式下:
vs 文件名 //可打开/创建 文件
注意:光标所在处,即是当下所在编辑的文件
步骤如下:
1.将账号切换成root账号
2.
vim /etc/sudoers //打开sudoers文件
3.光标定位到100行左右,将以下命令yy复制粘贴,将root名改为所添加用户名,然后在底行模式下wq!,保存退出即可
root ALL=(ALL) ALL
在Linux下,Vim的配置是通过编辑位于✨用户主目录下的.vimrc
文件来实现的。该文件包含了各种设置和自定义命令,以满足个人偏好和需求。下面是一些常见的Vim配置选项:
设置行号:
在.vimrc中添加以下行,启用显示行号:
set number
启用语法高亮:
语法高亮可以帮助您更清晰地看到代码结构。在.vimrc中添加以下行,启用语法高亮:
syntax on
设置缩进:
缩进对于代码的可读性很重要。您可以在.vimrc中设置默认的缩进方式和缩进大小。例如,将缩进方式设置为空格,并将缩进大小设置为4个空格:
set expandtab
set tabstop=4
设置自动补全:
您可以启用自动补全功能,以便在输入代码时自动提供建议。例如,使用插件"vim-autocomplpop",在.vimrc中添加以下行:
let g:acp_enableAtStartup = 1
设置主题:
您可以选择适合自己的Vim主题。首先,将主题文件(通常以.vim结尾)放入~/.vim/colors/目录中。然后,在.vimrc中添加以下行,设置使用的主题:
colorscheme
自定义键映射:
您可以自定义按键映射,以便为常用操作创建快捷键。例如,将F2键映射为保存当前文件的快捷键,在.vimrc中添加以下行:
nnoremap :w
安装插件管理器:
使用插件管理器可以方便地安装、更新和删除Vim插件。常见的插件管理器有Vundle、Pathogen和vim-plug等。
快速将vim打造成c++ IDE
前提先在yum下下好curl:
yum install curl
而后复制以下链接可下载脚本:
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
在linux编译下:
centos7 yum下载g++
yum install gcc gcc-c++
当我们在Linux系统上编译和运行程序时,通常会经历以下几个步骤:预处理、编译、汇编、链接和执行。让我逐一解释这些步骤的含义。
预处理(Preprocessing):
在预处理阶段,编译器会对源代码进行处理。它会处理以#
开头的预处理指令(条件编译),并将宏定义替换、删除注释、包含其他文件等操作。预处理生成的结果称为预处理后的源代码。
编译(Compilation):
编译阶段是将预处理后的源代码转换为汇编代码的过程。在这个阶段,编译器会将高级语言(如C或C++)的源代码翻译成低级的中间表示形式,即汇编代码。
汇编(Assembly):
在汇编阶段,汇编器将汇编代码转换为机器码指令。汇编器会将每条汇编语句翻译成与特定硬件平台相关的二进制指令。
链接(Linking):
链接阶段是将多个目标文件(.o/.obj)和库文件合并成一个可执行文件的过程。在这个阶段,链接器会解析函数和变量之间的引用关系,并将它们连接起来,生成最终的可执行文件。
执行(Execution):
执行阶段是将生成的可执行文件加载到内存中,并按照程序的逻辑顺序执行。此时,计算机会按照指令一条一条地执行程序,完成所需的任务。
需要注意的是,这些步骤并不是严格线性的,而是在编译过程中交叉进行的。通常,编译器会自动处理这些步骤,我们只需要运行相应的编译命令即可。
gcc常用选项:
在Linux中,静态库(Static Library)和动态库(Dynamic Library)是常用的代码重用方式。它们都是将一组函数和符号打包成一个文件,供其他程序使用。
静态库的文件扩展名通常为.a
(如libexample.a
)。使用静态库的步骤如下:
编译静态库:
gcc -c library.c // 编译源文件生成目标文件
ar rcs libexample.a library.o // 使用ar命令将目标文件打包成静态库
编译可执行文件并链接静态库:
gcc -o executable main.c -L/path/to/library -lexample // 编译可执行文件并链接静态库
这里-L
选项指定了库文件的路径,-l
选项指定了要链接的静态库。
可执行文件与编译器中的链接器在还没加载到内存时,就会先建立联系,链接器会告诉可执行文件动态库,即共享库的位置,等到所有代码加载到内存当中时,要调用动态库中的某一方法,就会依据链接器给的地址寻到对应的动态库。
若共享库一旦被销毁,其共享的所有可执行文件都会受到影响
动态库的文件扩展名通常为.so
(如libexample.so
)。使用动态库的步骤如下:
编译动态库:
gcc -shared -o libexample.so library.c // 编译源文件生成动态库
编译可执行文件并链接动态库:
gcc -o executable main.c -L/path/to/library -lexample // 编译可执行文件并链接动态库
这里-L
选项指定了库文件的路径,-l
选项指定了要链接的动态库。
除了上述方法,还可以使用dlopen
和dlsym
等函数动态加载和使用动态库。
总结来说,静态库适合于独立的、不需要频繁更新的代码,而动态库适合于共享的、可能需要更新的代码。
:在Windows下,静态库一般表示为.dll
,动态库表示为.lib
.i文件
:只执行过预处理生成的文件.s文件
:经过预处理、汇编生成的文件(里面是汇编转成了二进制文件).o文件
:目标文件,还未经过链接在Linux系统中,静态链接和动态链接是用于将程序与库文件进行连接的两种方式。
静态链接是指在编译过程中,将程序所需要的库文件的代码复制到可执行文件中,形成一个独立的、完整的可执行文件。这意味着程序不再依赖于外部的库文件,可以在任何没有相关库文件的系统上运行。静态链接的优点是可移植性好,不受外部环境的影响,且执行速度较快。缺点是可执行文件的体积较大
,并且每个使用相同库的程序都会有一份该库的副本,造成资源浪费。
动态链接是指在编译过程中,程序只包含对库文件的引用,而不将库文件的代码复制到可执行文件中。在程序运行时,系统会根据需要加载并链接相应的库文件。这样可以节省内存空间,并且当库文件更新时,所有使用该库的程序都能受益于更新。动态链接的优点是节省内存,减小可执行文件的体积,并且方便库文件的更新和维护。缺点是可能会存在版本兼容性问题
,如果系统上没有相应的库文件,则无法运行程序。
选择静态链接还是动态链接取决于具体情况。如果程序需要在多个系统上运行,或者需要独立部署,那么静态链接是一个较好的选择。如果程序依赖于一些常用的库文件,并且希望能够方便地更新和维护这些库文件,那么动态链接是一个更合适的选择。
- gcc 在编译时默认使用动态库。完成了链接之后,gcc 就可以生成可执行文件
- gcc默认生成的二进制程序,是动态链接的,这点可以通过
file
命令验证
所以在我们平常使用的开发环境中,其默认要为我们做的事需要有:
我们知道,linux下是默认带有动态库的,所以静态库需要我们自己去安装。
c静态库:
yum install glibc-static
sudo yum install -y libstdc++-static
Make是一种被广泛使用的构建工具,主要用于自动化构建和管理软件项目。它通过读取Makefile文件中的规则和指令来执行编译、链接、测试等操作,从而简化了项目构建的过程。
Makefile是Make工具所使用的配置文件,其中包含了一系列规则和指令,用于指导Make进行构建过程。Makefile采用了一种基于依赖关系的编程模型,通过定义目标(target)和依赖关系(dependencies)来描述源文件之间的关系,以及如何生成目标文件。
一个典型的Makefile文件包含了以下几个重要的部分:
变量定义:可以定义一些变量,用于存储编译选项、文件路径等信息,提高可维护性和灵活性。
规则定义:包括目标、依赖关系和执行命令。每个规则指定了生成某个目标文件所需的依赖文件,以及生成目标文件的命令。
默认规则:如果没有明确指定目标,默认规则会被执行。通常情况下,这个规则用来构建整个项目。
在Makefile中,目标和依赖关系之间通过规则连接起来。当我们运行make命令时,Make会检查目标文件和依赖文件的时间戳,确定哪些文件需要重新编译,然后按照依赖关系执行相应的命令,生成目标文件。
通过使用Make和Makefile,可以实现项目的自动化构建和管理,提高开发效率和可维护性。它是Linux开发中非常重要且常用的工具之一。
如上便是本期的所有内容了,如果喜欢并觉得有帮助的话,希望可以博个点赞+收藏+关注❤️ ,学海无涯苦作舟,愿与君一起共勉成长