赞
踩
目录
4. ldd 查看可执行程序依赖库 ,file查看动静态链接 编辑
5.实现静态链接(gcc和g++默认生成的二进制程序是动态链接的)
①Linux有以下三种方法安装软件:
①源码安装,自行编译(不友好)
②rpm安装(存在依赖关系问题)
③yum安装(常用)
②yum如何安装软件
yum是一个软件包管理器,能够从指定的服务器自动下载软件包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,也可以卸载软件。
③下载软件肯定是要联网的,使用ping命令查看网络情况:
④ 关于非标准软件
有些软件服务是非标准的,在其他服务器上
①.查看所有软件包
[gsx@VM-0-2-centos ~]$ yum list
②.查找特定软件
(1)lrzsz可以将Windows当中的文件上传到Linux当中,也可以将Linux当中的文件下载到Windows当中,实现云服务器和本地机器之间进行文件互传。
(2)通过管道和 grep找到特定软件
说明一下:
1)软件包名称:主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构。
2)"x86_64"后缀表示64位系统的安装包,"i686"后缀表示32位系统安装包,选择包时要和系统匹配。
3)"el7"表示操作系统发行版的版本,“el7"表示的是"centos7/redhat7”,“el6"表示"centos6/redhat6”。
4)最后一列表示的是“软件源”的名称,类似于“小米应用商店”这样的概念
① 安装
yum会自动找到都有哪些软件包需要下载, 需要手动确认" y "进行安装。
②卸载
yum自动卸载,清理软件,需要确认" y "卸载
③无交互式安装/卸载
这里添加 -y 选项就不需要手动确认安装,省心。
补充:
1.centOS7中任何时刻只允许一个yum进行安装,如果再尝试用yum安装另外一个软件,yum会报错。
2.建议安装软件的时候都带上sudo,因为安装的时候一定是需要把对应的软件下载下来这是第一步,下载完毕之后下一步工作是吧下载好的软件拷贝到Linux系统指定的目录下面,而有的目录不允许你拷贝,为了防止拷贝出现问题的情况,建议yum下载的时候带sudo
3.client怎么知道包服务器在哪里?
client已经配置了目的服务器,以及软件源信息;以后安装的时候就会自动找到服务器,知道去哪里下载
vim在我们做开发的时候,主要解决我们编写代码的问题,本质上就是一个多模式的文本编辑器,vim是对vi的拓展。
vim最常用的三种模式:命令模式、插入模式、底行模式。
①. 命令模式(Normal mode)。
在命令模式下,我们可以控制屏幕光标的移动,字符、字或行的删除,复制粘贴,剪贴等操作。
②. 插入模式(Insert mode)。
只有在插入模式下才能进行文字输入,该模式是我们使用最频繁的编辑模式。
③. 底行模式(Command mode)。
在底行模式下,我们可以将文件保存或退出,也可以进行查找字符串等操作。在底行模式下我们还可以直接输入vim help-modes查看当前vim的所有模式。
①命令模式 切换至 插入模式
(1)输入「i」:在当前光标处进入插入模式。
(2)输入「a」:在当前光标的后一位置进入插入模式。
(3)输入「o」:在当前光标处下一行进入插入模式。
②命令模式 切换至 底行模式
(shift + ;)其实等价于 :
③插入模式 或 底行模式 切换至 命令模式
插入模式或底行模式切换至命令模式都是直接按一下「Esc」键即可。
①移动光标
(1)按「k」:光标上移。
(2)按「j」:光标下移。
(3)按「h」:光标左移。
(4)按「l」:光标右移。( h ,i ,j ,k 是对之前的兼容,很早的时候没有 ↑↓←→四个键)
(5)按「$」(shift+4):移动到光标所在行的行尾。
(6)按「^」(shift+6):移动到光标所在行的行首。
(7)按「gg」:移动到文本开始。
(8)按「Shift+g」:移动到文本末尾。
(9)按「n+Shift+g」:移动到第n行行首。
(10)按「n+Enter」:当前光标向下移动n行。
(11)按「w ,nw」:光标从左到右,从上到下的跳到下一个单词的开头。
(12)按「e ,ne」:光标从左到右,从上到下的跳到下一个单词的结尾。
(13)按「b ,nb」:光标从右到左,从下到上的跳到上一个单词的开头
②删除
(1) 按「x」:删除光标所在位置的字符。
(2) 按「nx」:删除光标所在位置开始往后的n个字符。
(3) 按「X(shift+x)」:删除光标所在位置的前一个字符。
(4) 按「nX」:删除光标所在位置的前n个字符。
(5) 按「dd」:删除光标所在行(更像是剪切,如果不粘贴就是删除)。
(6) 按「ndd」:删除光标所在行开始往下的n行。
③复制粘贴
(1) 按「yy」:复制光标所在行到缓冲区。
(2) 按「nyy」:复制光标所在行开始往下的n行到缓冲区。
(3) 按「yw」:将光标所在位置开始的单词复制到缓冲区。
(4) 按「nyw」:将光标所在位置开始往后的n个单词复制到缓冲区。
(5) 按「p」:将已复制的内容在光标的下一行粘贴上。
(6) 按「np」:将已复制的内容在光标的下一行粘贴n次。
④撤销
(1)按「u」:撤销。
(2)按「Ctrl+r」:恢复刚刚的撤销。
⑤大小写切换
(1) 按「~ (shift+`) 」:完成光标所在位置字符的大小写切换。
(2) 按「n~」:完成光标所在位置开始往后的n个字符的大小写切换。
⑥替换
(1) 按「r」:替换光标所在位置的字符。
(2) 按「R(shift+r)」:替换光标所到位置的字符,直到按下「Esc」键为止。(进入替换模式)
⑦修改
1)按「cw」:将光标所在位置开始到字尾的字符删除,并进入插入模式。
2)按「cnw」:将光标所在位置开始往后的n个字删除,并进入插入模式。
⑧翻页
(1) 按「Ctrl+b」:上翻一页。
(2) 按「Ctrl+f」:下翻一页。
(3) 按「Ctrl+u」:上翻半页。
(4) 按「Ctrl+d」:下翻半页。
⑨常用:
补充:
(1)
(2)!vim(执行上一次的vim指令)
进入底行模式前必须是命令模式,然后shift + ;。
①设置行号
(1)「set nu」:显示行号。
(2) 「set nonu」:取消行号。
②保存退出
(1)「w」:保存文件。
(2)「q」:退出vim,如果无法离开vim,可在「q」后面跟一个「!」表示强制退出。
(3)「wq」:保存退出。
③分屏
(1)「vs 文件名」:实现多文件的编辑。
(2)「Ctrl+w+w」:光标在多屏幕下进行切换。
④执行指令(底行模式下也可以进行外部操作)
「!+指令」:在文本编辑的情况下,可以在指令前面加上「!」就可以执行Linux的指令,例如查看目录、编译当前代码等
(1)「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 「n」会往后寻找到您要的关键字为止。(2)「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直 按「n」会往前寻找到您要的关键字为止。
①在目录/etc/下面,有个名为vimrc的文件,这是系统中公共的配置文件,对所有用户都有效。
②在每个用户的主目录/home/xxx下,都可以自己建立私有的配置文件,命名为“.vimrc”,这是该用户私有的配置文件,仅对该用户有效。③vim的配置比较复杂,某些vim配置还需要使用插件,建议不要自己一个个去配置。比较简单的方法是使用别人做好的,在自己的当前用户登录的账号执行以下指令(剩下的按照提示一步步做就行了):curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
gcc和g++分别是GNU的C和C++的编译器,gcc和g++在执行编译程序的时候一般有以下四个步骤:
(1) 预处理(头文件展开、去注释、宏替换、条件编译)。
(2) 编译(将C/C++代码翻译成汇编语言)。
(3) 汇编(汇编代码转为二进制目标文件)(可重定向目标文件)。
(4) 链接(目标文件和系统库进行链接形成可执行程序)。
gcc最终是要把代码变成二进制程序,为什么要把代码翻译成二进制的可执行程序?
计算机只认识二进制,准确点,磁盘,cpu,网卡,内存,显卡,各种电子设备只认识二进制;程序要能够被内存保存起来,被cpu执行你的程序只能是二进制。
常用选项:
(1) -E 只进行预处理,这个不生成文件,你需要把他重定向到一个输出文件里面(否则将预处理后的结果显示到屏幕上)。
(2) -S 编译到汇编语言,不进行汇编和链接
(3) -c 编译到目标代码
(4) -o 将处理结果输出到指定文件,该选项后需紧跟输出文件名。
(5) -static 此选项对生成的文件采用静态链接。
(6) -g 生成调试信息(若不携带该选项则默认生成release版本)。
(7) -shared 此选项将尽量使用动态库,生成文件较小。
(8) -w 不生成任何警告信息。
(9) -Wall 生成所有警告信息。
(10) -O0/-O1/-O2/-O3 编译器优化选项的四个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高。
①预处理
[gsx@VM-0-2-centos 2022.6.2]$ gcc -E test.c -o test.i
(1) 头文件展开:通过编译器找到指定的头文件,并且将该头文件对应的内容拷贝至源文件。
(2) 当宏不存在的时候默认是假
(3)gcc有个选项 -D动态指定宏
②编译
[gsx@VM-0-2-centos 2022.6.2]$ gcc -S test.i -o test.s
③汇编
[gsx@VM-0-2-centos 2022.6.2]$ gcc -c test.s -o test.o
④链接
[gsx@VM-0-2-centos 2022.6.2]$ gcc test.o -o mytest
- gcc/g++不带-E、-S、-c选项时,就默认生成预处理、编译、汇编、链接全过程后的文件。
- 若不用-o选项指定生成文件的文件名,则默认生成的可执行文件名为a.out
- gcc -o mytest test.c(-o选项后面接文件名,不论放在那里)
①减少开发者的工作量(站在巨人的肩膀上)
②其实是软件分工的一种表现
(1)静态库是指编译链接时,把库文件的代码全部加入到可执行文件当中,因此生成的文件比较大,但在运行时也就不再需要库文件了,静态库一般以.a为后缀。
静态链接:
优点:不依赖第三方库,程序的可移植性较高。
缺点:浪费空间(多个程序之间调用相同的库函数,每个库函数都有一份实现),加载慢。
(2) 动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件当中,而是在程序运行时由链接文件加载库,这样可以节省系统的开销,动态库一般以.so为后缀。
动态链接:
优点:省空间(磁盘的空间(存储),内存的空间(运行)),可执行程序体积小,加载速度快(从磁盘加载到内存)。
缺点:依赖动态库,程序可移植性较差(运行时)。
(3)库的命名
libname.so(a)
①动态库和静态库没有绝对的好坏,取决于应用场景。
②所谓的静态链接就是把库中的实现拷贝到自己的可执行程序当中;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。