资讯专栏INFORMATION COLUMN

Linux环境基础开发工具使用

Dean / 3306人阅读

摘要:环境基础开发工具使用软件包管理器的三板斧查看软件包安装软件卸载软件和互传文件的三种模式的转换命令模式插入模式底行模式编译器使用函数库调试器使用项目自动化构建工具软件包管理器软件包和软件包管理器就好比手机上的和应用

Linux 软件包管理器yum

软件包和软件包管理器, 就好比手机上的"App" 和 “应用商店”

所以yum的作用主要是在Linux下安装软件

注意:
关于 yum 的所有操作必须保证主机(虚拟机)网络畅通

yum的三板斧

①查看软件包

通过yum list 命令可以罗列出当前一共有哪些软件包
我们可以使用grep命令筛选出我们需要的包

例如:
yum list | grep lrzsz

软件名"lrzsz"
“x86_64” 后缀表示64位系统的安装包, “i686” 后缀表示32位系统安装包. 选择包时要和系统匹配
“el7” 表示操作系统发行版的版本. “el7” 表示的是 centos7/redhat7. “el6” 表示 centos6/redhat6.
os表示的是 “软件源” 的名称, 类似于 “小米应用商店”, “华为应用商店” 这样的概念

②安装软件

sudo yum install (-y) lrzsz

加上-y后直接自动安装不用输入y确认

安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成,卸载也一样

centos中任何时刻只允许一个yum运行

③卸载软件

sudo yum remove lrzsz

Linux和Windos互传文件

Windows传到Linux直接拖拽到命令框Linux到Windows用sz 文件名

vim

本质是多模式的文本编辑器

vim目前包括10多种模式,下面我们来讲讲其中的三种模式

vim 文件名 进入文本编辑器(如下图):

可以看到进入默认是Normal(命令模式)

如果要退出就进入底行模式输入wq!退出

vim的三种模式的转换

①命令模式(Normal)

命令:

shift+$:行尾
shift+^:行头
shift+g:文本最后一行开头
gg:文本第一行开头
n+shift+g:定位到第n行开头
h,j,k,l:左下上右
w:按照"单词"从左向右移动,每次光标指向下一个单词的开始
e:按照"单词"从左向右移动,每次光标指向下一个单词的结尾
b:按照"单词"从右向左移动
#l:光标移到该行的第#个位置
ctrl+b:下翻一页
ctrl+f:上翻一页
ctrl+u:下翻半页
ctrl+d:上翻半页

复制粘贴:

yy:复制光标所在行
nyy:从光标行开始复制n行
nyw,yw:按照单词复制
p:粘贴
np:粘贴n次

撤销:

u:撤销
ctrl r:恢复刚刚的撤销

删除:

dd:删除光标所在行
ndd:从光标所在行开始删除n行
dd,ndd完再加p:就可以实现剪切的功能
x,nx:删除光标所在字符
shift+x(X),nX:往前删除字符,不包括光标

替换:

shift+~:大小写切换
r,nr:替换光标所在字符
shift+r®:进入替换模式

跳至指定的行:

#G:移动光标至文章的第#行行首

②插入模式(Insert)

插入模式就是正常的文本编辑

③底行模式(Command)

set nu: 输入set nu后,会在文件中的每一行前面列出行号
wq!:保存并退出文本编辑器,w表示保存写的内容,q表示退出,!表示强制
vs 文件名:分屏
ctrl+ww:光标在分屏下切换

Linux编译器-gcc/g++使用

gcc编译:
格式:

gcc [选项] 要编译的文件 [选项] [目标文件]

c程序的翻译:

1 预处理:
头文件展开,去注释,宏替换,条件编译

gcc –E test.c –o test.i
选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程
选项“-o”是指将预处理过的文件结果放入test.i中

gcc test.c -D π=3.14
-D 宏的命令行定义,可以动态地进行宏定义

  1. 编译

gcc –S test.c –o test.s

只进行编译而不进行汇编,生成汇编代码
3. 汇编(生成可重定向文件)

gcc –c test.s –o test.o

汇编代码转化为二进制目标代码

4 链接(生成可执行文件或库文件)
gcc test.o –o test

目标文件只有函数调用没有函数实现,链接过程的本质是将自己的函数调用过程与实现关联起来

lld 文件名
查看文件所依赖的库

可以看到test.c使用了c标准库该库是一个动态库

file 文件名
查看文件的详细类型


gcc用于写c语言,输入命令时将gcc改成g++就可以进行c++的编写

函数库

作用:减少开发的工作量

函数库一般分为静态库和动态库两种

动态库静态库
原理程序需要找到库函数,执行后返回再继续执行剩余代码在链接的时候,需要的库函数会拷给程序,直接在程序里面执行
优点省空间,体积小,加载速度快不依赖第三方库,可移植性强
缺点依赖第三方库,可移植性弱浪费空间,加载速度慢

gcc生成可执行程序,默认是动态链接的
gcc加上-static生成静态链接

Linux调试器-gdb使用

调试:gdb 文件名
退出: ctrl + d 或 quit

centos7中 gcc默认生成的可执行程序是release(文件比debug小,不可被调试)
添加-g让程序以debug方式发布

调试命令:

list(或者l) (行号):显示文件源代码,接着上次的位置往下列,每次列10行
list(l) 函数名:列出某个函数的源代码
r或run:运行程序
break(或者b) 行号:在某一行设置断点
info b :查看断点信息
delete(或者d) n:删除序号为n的断点
p 变量:打印变量值
n 或 next:逐过程执行
s或step:逐语句,进入函数调用
display 变量名:监视查看一个变量,每次停下来都显示它的值
undisplay 编号:取消对先前设置的那些变量的跟踪
until X行号:跳至X行
finish:执行到当前函数返回,然后挺下来等待命令
continue(或c):跳到下一个断点
set var:修改变量的值
breaktrace(或bt):查看各级函数调用及参数

Linux项目自动化构建工具-make/Makefile

makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率

make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建

$@:依赖关系中的目标文件
$^:依赖关系中的依赖文件列表
$<:依赖关系中的一个一个的依赖文件

用命令make来编译目标文件,用完后make clean清理文件

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/121952.html

相关文章

  • 技术选型之Docker容器引擎

    摘要:是系统提供的容器化技术,简称,它结合和技术为用户提供了更易用的接口来实现容器化。公司结合和以下列出的技术实现了容器引擎,相比于,具备更加全面的资源控制能力,是一种应用级别的容器引擎。 showImg(https://segmentfault.com/img/bVbtPbG?w=749&h=192); 题外话   最近对Docker和Kubernetes进行了一番学习,前两天做了一次技术...

    xiangchaobin 评论0 收藏0
  • 技术选型之Docker容器引擎

    摘要:是系统提供的容器化技术,简称,它结合和技术为用户提供了更易用的接口来实现容器化。公司结合和以下列出的技术实现了容器引擎,相比于,具备更加全面的资源控制能力,是一种应用级别的容器引擎。 showImg(https://segmentfault.com/img/bVbtPbG?w=749&h=192); 题外话   最近对Docker和Kubernetes进行了一番学习,前两天做了一次技术...

    monw3c 评论0 收藏0
  • Linuxlinux环境基础开发工具使用

    摘要:函数名列出某个函数的源代码,含函数名上下各五行类比调试或从开始连续而非单步执行程序遇到断点停下。相当于中的或单条执行。 目录 一、调试器gdb 1、可以使用gdb的可执行文件生成 2、使用命令 1、开始调试和退出调试 2、list 3、类比vs调试 4、代码调试三剑客 5、变量 6、断点 二...

    dongfangyiyu 评论0 收藏0
  • Linux 挖坑不埋指南

    摘要:在的世界里,中文并不是必须的,英文是必须的,但是只要你愿意,还是有办法让支持中文的显示与输入的,而且搞定这个问题,意味着你对的认识程度已经超过了很多其他发行版的用户。 跳进 Linux 的唯一理由 既然知道 Linux 在这个世界已经存在了,而你又是个挺喜欢摆弄计算机的人,那么对 Linux 是怎样的一种存在难道不感到好奇么? 也许在你开始尝试使用 Linux 时,已经看到了很多对 L...

    李涛 评论0 收藏0
  • Linux 挖坑不埋指南

    摘要:在的世界里,中文并不是必须的,英文是必须的,但是只要你愿意,还是有办法让支持中文的显示与输入的,而且搞定这个问题,意味着你对的认识程度已经超过了很多其他发行版的用户。 跳进 Linux 的唯一理由 既然知道 Linux 在这个世界已经存在了,而你又是个挺喜欢摆弄计算机的人,那么对 Linux 是怎样的一种存在难道不感到好奇么? 也许在你开始尝试使用 Linux 时,已经看到了很多对 L...

    luzhuqun 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<