Linux GCC,GDB,Shell脚本,Vim的简单使用

这篇具有很好参考价值的文章主要介绍了Linux GCC,GDB,Shell脚本,Vim的简单使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

GCC命令

GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器

编译一个简单的.c程序:

四步分开写:

gcc -E -o hello.i hello.c	// 预处理
gcc -S -o hello.s hello.i	// 编译
gcc -c -o hello.o hello.s	// 汇编
gcc -o hello hello.o		// 链接

分成两步:

gcc -c -o hello.o hello.c  // 先编译(做了前三步,但不链接)
gcc -o hello hello.o       // 再链接

一步到位:(这个hello就是可执行文件,存放程序结果)

gcc -o hello hello.c

一下编译多个源文件

gcc -o hello a.c b.c c.c
gcc -o a.o a.c 
gcc -o b.o b.c 
gcc -o c.o c.c 
gcc -o hello a.o b.o c.o   

gcc -o hello hello.c这种一步到位的方法会将文本文件直接转化成可执行文件,这样的做法会比将源代码分别经过预处理,编译,汇编,链接这四个过程的效率要更高,

这是因为在一次编译过程中,gcc -o output file.c会自动执行预处理、编译、汇编和链接这四个步骤,它能够根据需要自动调用相应的工具。这样可以避免中间文件的生成和保存,减少了磁盘I/O的开销,并减少了编译过程中的文件传输时间。

然而,如果你在多次编译中需要重复使用预处理文件、汇编文件或目标文件,或者需要手动进行编译的不同阶段的调试或优化,那么将源代码分别经过预处理、编译、汇编和链接四个步骤可能会更加灵活和方便。

总的来说,对于一次性的编译过程而言,直接使用gcc -o output file.c的方式更高效。而对于多次编译、调试或优化的情况,分阶段进行编译可能更为灵活。在实际使用中,可以根据具体需求和优化目标选择合适的编译方式。

如果说需要编译C++程序的话,就把gcc改成g++即可

g++ -o hello hello.c

GDB命令

GDB是一个功能强大的调试工具,用于调试C、C++等程序
接下来讲一个简单的调试例子,并给出常用的命令:

1.先用GCC命令生成调试信息
在g++/gcc 后面加上 -g表示生成调试信息

g++ -g -o hello hello.cpp

如果不生成的话,会弹出错误
“NO symbol table is loaded”
意味着在您加载的可执行文件中没有找到符号表。符号表包含了程序中变量、函数和其他符号的信息,它是调试器进行源代码和机器码之间映射的关键。

2.使用gdb命令进行调试
gdb的常见命令:
1.使用gdb

gdb myprogram(文件名)

2.设置断点

break <location>

location可以是一个函数,或者是一个源文件加行号的形式,例如:

break main
break hello.cpp:5

3.运行程序

run

4.继续运行程序(在一个断点停下之后)

continue

遇到下一个断点会停下

5.单步执行(不进入函数)

next

6.单步执行(进入函数)

step

7.打印变量的值

print 变量名

8.查看堆栈

backtrace

9.监视变量

watch 变量名

监视变量的值,当该变量的值发生变化时,GDB会中断程序的执行。

10.修改变量的值

set 变量名 = 值

常用命令

接下来给出一个实例:

1.写一个待测试程序hello.cpp,如图
Linux GCC,GDB,Shell脚本,Vim的简单使用
2.用g++ 命令生成可执行文件
Linux GCC,GDB,Shell脚本,Vim的简单使用
3.使用gdb命令开始调试
Linux GCC,GDB,Shell脚本,Vim的简单使用
4.设置断点
Linux GCC,GDB,Shell脚本,Vim的简单使用
如图,我在程序第6行设置了一个断点,第六行的代码此时为
printf(“%d”,sum);也就是说程序运行到这行之前就停止了

4.使用run命令运行程序
Linux GCC,GDB,Shell脚本,Vim的简单使用
如图,程序运行到第六行发现有一个断点,停止了运行,并给出了提示.

5.用print打印变量
Linux GCC,GDB,Shell脚本,Vim的简单使用
会发现x和y的值是正常的,但是因为sum=x+y这条命令没执行,所以sum的值是没初始化的

6.单步执行程序

Linux GCC,GDB,Shell脚本,Vim的简单使用
我们单步执行下一行语句 sum=x+y之后,再用print打印 sum的值
sum的值变成了15

7.继续运行程序
Linux GCC,GDB,Shell脚本,Vim的简单使用
因为后续没有断点了,所以程序会直接运行到结束,并输出结果.

Shell脚本

Linux GCC,GDB,Shell脚本,Vim的简单使用
这些都只是Linux操作系统的一些基本操作
接下来我们说一下如何编写一个简单的shell脚本

1.创建一个.sh后缀的文件

vim create_project.sh

写入:

#!/bin/bash

echo "hello shell"
mkdir my_project
cd my_project
cd ..
mkdir build
touch main.cpp

其中
#!/bin/bash
是告诉操作系统使用Bash解释器来解释和执行后续的Shell脚本代码。Bash(Bourne Again SHell)是一种流行的Unix/Linux Shell,它提供了强大的命令行解释器和脚本编程功能。

使用#!/bin/bash作为shebang行的好处是,它确保脚本在执行时将使用Bash解释器,而不依赖于默认的Shell解释器。这样,您可以确保脚本中使用的特定Bash语法和功能在执行时可用。

除了#!/bin/bash,您还可以使用其他Shell解释器作为shebang行的一部分,例如#!/bin/sh表示使用标准Shell解释器,或#!/bin/zsh表示使用Zsh解释器。根据您的需求和系统配置,选择适合的解释器。

2.设置权限为可运行

chmod +x create_project.sh

3.运行脚本

./create_project.sh     #默认按照第一行的注释使用相应的解释器 

#第一行是 #!/bin/bash就默认使用bash解释器
#如果是   #!/bin/sh 就默认使用shell解释器

也可以显示的指定所使用的解释器

bash create_project.sh  #使用bash解释器运行这个脚本

bash ./create_project.sh  #加上路径,推荐还是加上路径,因为更加安全

如果shell脚本的目录或位置已经在系统的环境变量中了,那么可以直接使用不带路径的运行命令
否则还是必须要使用带路径的运行命令

特殊的:
如果在脚本的第一行写入 #!/bin/bash 指定使用bash解释器,但是却在运行的时候,使用sh运行
那么这种情况,系统是会忽略脚本中的 shebang注释从而改用sh解释器

运行之后,系统就会依次执行shell脚本中的命令.

VIM指令

功能:
(1) 命令行模式下的文本编辑器。
(2) 根据文件扩展名自动判别编程语言。支持代码缩进、代码高亮等功能。
(3) 使用方式:vim filename
如果已有该文件,则打开它。
如果没有该文件,则打开个一个新的文件,并命名为filename
模式:
(1) 一般命令模式
默认模式。命令输入方式:类似于打游戏放技能,按不同字符,即可进行不同操作。可以复制、粘贴、删除文本等。
(2) 编辑模式
在一般命令模式里按下i,会进入编辑模式。
按下ESC会退出编辑模式,返回到一般命令模式。
(3) 命令行模式
在一般命令模式里按下:/?三个字母中的任意一个,会进入命令行模式。命令行在最下面。
可以查找、替换、保存、退出、配置编辑器等。
操作:
(1) i:进入编辑模式
(2) ESC:进入一般命令模式
(3) h 或 左箭头键:光标向左移动一个字符
(4) j 或 向下箭头:光标向下移动一个字符
(5) k 或 向上箭头:光标向上移动一个字符
(6) l 或 向右箭头:光标向右移动一个字符
(7) n:n表示数字,按下数字后再按空格,光标会向右移动这一行的n个字符
(8) 0 或 功能键[Home]:光标移动到本行开头
(9) $ 或 功能键[End]:光标移动到本行末尾
(10) G:光标移动到最后一行
(11) :n 或 nG:n为数字,光标移动到第n行
(12) gg:光标移动到第一行,相当于1G
(13) n:n为数字,光标向下移动n行
(14) /word:向光标之下寻找第一个值为word的字符串。
(15) ?word:向光标之上寻找第一个值为word的字符串。
(16) n:重复前一个查找操作
(17) N:反向重复前一个查找操作
(18) :n1,n2s/word1/word2/g:n1与n2为数字,在第n1行与n2行之间寻找word1这个字符串,并将该字符串替换为word2
(19) :1, s / w o r d 1 / w o r d 2 / g :将全文的 w o r d 1 替换为 w o r d 2 ( 20 ) : 1 , s/word1/word2/g:将全文的word1替换为word2 (20) :1, s/word1/word2/g:将全文的word1替换为word2(20):1,s/word1/word2/gc:将全文的word1替换为word2,且在替换前要求用户确认。
(21) v:选中文本
(22) d:删除选中的文本
(23) dd: 删除当前行
(24) y:复制选中的文本
(25) yy: 复制当前行
(26) p: 将复制的数据在光标的下一行/下一个位置粘贴
(27) u:撤销
(28) Ctrl + r:取消撤销
(29) 大于号 >:将选中的文本整体向右缩进一次
(30) 小于号 <:将选中的文本整体向左缩进一次
(31) :w 保存
(32) :w! 强制保存
(33) :q 退出
(34) :q! 强制退出
(35) :wq 保存并退出
(36) :set paste 设置成粘贴模式,取消代码自动缩进
(37) :set nopaste 取消粘贴模式,开启代码自动缩进
(38) :set nu 显示行号
(39) :set nonu 隐藏行号
(40) gg=G:将全文代码格式化
(41) :noh 关闭查找关键词高亮
(42) Ctrl + q:当vim卡死时,可以取消当前正在执行的命令
异常处理:
每次用vim编辑文件时,会自动创建一个.filename.swp的临时文件。
如果打开某个文件时,该文件的swp文件已存在,则会报错。此时解决办法有两种:
(1) 找到正在打开该文件的程序,并退出
(2) 直接删掉该swp文件即可


以二进制模式打开文件:

vim -b 文件名

这里面的命令都有各种形式的变化,比如当我们使用复制命令:y时

:1,2y     表示复制 1-2行的内容

我们还可以使用可视模式文章来源地址https://www.toymoban.com/news/detail-486861.html

将光标移动到要复制的起始位置。
按下 v 进入普通可视模式。
使用方向键或 hjkl 键选择要复制的部分。
按下 y 复制选中的部分。
按下 p 将复制的内容粘贴到光标位置之后。

到了这里,关于Linux GCC,GDB,Shell脚本,Vim的简单使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [linux初阶][vim-gcc-gdb] TwoCharter: gcc编译器

    目录 一.Linux中gcc编译器的下载与安装 二.使用gcc编译器来翻译 C语言程序  ①.编写C语言代码 ②翻译C语言代码 a.预处理 b.编译  c.汇编  d.链接 ③.执行Main 二进制可执行程序(.exe文件)  三.总结  使用yum命令(相当于手机上的应用市场)来进行安装.  下载完毕之后,使用 which gc

    2024年04月10日
    浏览(45)
  • [linux初阶][vim-gcc-gdb] OneCharter: vim编辑器

    目录 一.vim编辑器基础 ①.vim的语法 ②vim的三种模式 ③三种模式的基本切换  ④各个模式下的一些操作  二.配置vim环境  ①手动配置(不推荐)  ②自动配置(推荐) vim是vi的升级版,包含了更加丰富的功能. vim [文件名] 命令模式 插入模式   底行模式  如图: 命令模式: shift + 4: 光

    2024年04月17日
    浏览(35)
  • 【Powershell 】(Windows下)常用命令 | 命令别名 | 运行Windows命令行工具 | 运行用户程序(vim、gcc、gdb)

    微软官方Powershell文档:https://learn.microsoft.com/zh-cn/powershell/ 命令详细说明,在PDF的最后面: PowerShell 是一种用于自动化的 命令行 shell 和 脚本语言 。 Wikipedia 包含以下关于 shell 的描述: shell 通过提示用户输入、解释其输入,然后处理基础操作系统的输出来管理用户系统交互(

    2024年02月13日
    浏览(34)
  • Linux——环境开发基础(vim、gcc、yum、git、gdb)

    目录 1.Linux编辑器——vim使用  2.Linux编译器——gcc/g++ 3.Linux项目自动化构建工具——make/Makefile 4.Linux软件包管理器——yum 5.Linux调试器——gdb 前言:因为篇幅原因,本文着重列出命令,小伙伴下去自己尝试,只有多使用才能真的记住!  vim是一款多模式的编辑器 ——命令模式

    2024年02月17日
    浏览(35)
  • 【Linux】Linux工具篇(yum、vim、gcc/g++、gdb、Makefile、git)

    🚀 作者简介:一名在后端领域学习,并渴望能够学有所成的追梦人。 🚁 个人主页:不 良 🔥 系列专栏:🛹Linux   🛸C++ 📕 学习格言:博观而约取,厚积而薄发 🌹 欢迎进来的小伙伴,如果小伙伴们在学习的过程中,发现有需要纠正的地方,烦请指正,希望能够与诸君一

    2024年02月12日
    浏览(36)
  • Linux中的工具:yum,vim,gcc/g++,make/makefile,gdb

    目录 1、yum 1.1 查看软件包:  1.2 安装软件包 1.3 卸载软件 2、vim 2.1 vim的三种模式 2.2 vim的基本操作 2.3. vim正常模式命令集 2.3.1 插入模式 2.3.2 移动光标 2.3.3 删除文字 2.3.4 复制 2.3.5 替换 2.3.6撤销上一次操作 2.3.7 更改 2.3.8 跳至指定的行 2.4. vim末行模式命令集 3、gcc/g++ 3.1 预处理

    2024年02月10日
    浏览(39)
  • [Linux][环境配置][yum][vim][gcc/g++][gdb][makefile][git]详细讲解

    本篇文章以Centos为例 通过 yum list 命令可以罗列出当前一共有哪些软件包,由于包的数目可能非常之多, 使用 grep 命令只筛选出我们关注的包 yum list | grep sl 注意事项: 软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构 “x86_64” 后缀表示64位系统

    2024年04月13日
    浏览(35)
  • Linux中的开发工具(yum,vim,gcc/g++,gdb,Makefile,git)

    yum(Yellow dog Updater,Modified)是Linux下非常常用的一种 包管理器 。主要应用在Fedora,RedHat,Centos等发行版上。 和手机上的软件商店类似,我们可以使用 yum 来下载各种我们想要的软件包。使用 yum 时必须联网。 yum 基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装

    2024年02月08日
    浏览(33)
  • 【Linux】vim(附配置sudo)、yum、gcc、g++、gdb、make/Makefile工具汇总

    (一)历史沉淀 我们在安装一个软件之前,需要先下载对应的软件包,但是这个软件包并不存在于我们本地的计算机磁盘,而是存在于远端服务器上;那么计算机如何知道该软件存在于具体的哪一台服务器上呢? 对于电脑来说,我们一般通过搜索对应软件的官网来得到相应

    2024年02月13日
    浏览(38)
  • 【Linux 入门篇(三)】Vim、Gcc、Make、Makefile、Shell

    Linux系统都会自带vi编辑器,vim编辑器需要另外安装。 安装命令: sudo apt-get install vim 使用vi命令打开文件: vim test.c 1.1 一般模式 用vim打开一个软件以后自动进入到此模式。 1.2 编辑模式 一般模式中无法编辑文件,要编辑文件就要进入编辑模式,按下“i、I、a、A、o、O、s、

    2023年04月14日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包