Linux的开发工具

article/2025/11/5 15:36:41

文章目录

    • vim的介绍
    • Linux编译器 gcc / g++的使用
    • 动态库和静态库
    • Linux调试工具 gdb的使用
    • Linux项目自动化构建工具make 和 makefile
    • 进度条程序的编写

vim的介绍

什么是vim? 简而言之,vim就是一个文本编辑器,我们用来写代码的工具。
所以当最开始打开vim的时候就是一个记事本,这里可以进行快速配置(可以拥有vs的自动补齐功能以及语法高亮)
直接输入:curl -sf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

vim test.c //如果存在test.c则进入编辑,不存在则自动创建test.c文件
vim有多种模式,这里主要介绍3种模式
在这里插入图片描述
命令模式下的主要操作:
早期的键盘是没有上下左右键的: h左,l右,k上,j下
shitf + ^ : 光标移动到行首
shift + $ : 光标移动到行尾
gg : 直接到第一行
shift + g : 到行尾
n + shift + g : 到底n行
w : 在一行内按单词向后移
b:在一行内按单词向前移动
yy : 复制当前行
nyy:复制n行
p :粘贴
np: n次重复的粘贴
dd: 删除光标所在行
ndd:删除n行
shift + ~ : 大写转小写,小写转大写
x: 删除一个字符
nx : 删除 n个字符
shift + x(X) : 从后往前删除
r: 替换一个字符
shift +r :进入替换模式
u: 撤销
ctrl + 人:反撤销

底行模式:
set nu 设置行号
set nonu 取消行号
vs + 文件名 :多文件操作 (ctrl +w +w 文件之间的光标跳转)
w :保存
q: 推出
!:强制 (上面三个可以混搭 w! q! wq !)

插入模式 直接跳过

如果觉得学习困难,请坚持重复学习。

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

复习一下程序的翻译环境:
1预处理 : 头文件的展开,宏替换,注释的删除,条件编译
2编译 : 语法检查,生成汇编代码
3汇编 : 将汇编代码转换成二进制的机器指令,形成符号表
4链接:找到函数调用的地址,合并符号表,生成可执行程序。
g++也一样

指令快速记忆 :esc iso -o后面指定生成的文件名
在这里插入图片描述

动态库和静态库

动态库(默认) : 后缀是 .so 动态链接,每次都从库目录中查找相关代码
静态库 : 后缀是 .a 静态链接, 将库中的代码拷贝到可执行程序中

我们每次使用printf()函数的时候,有没有想过是在哪里实现的呢,又是怎么调用的呢?
其实我们每次都会去C语言库目录下去查找,而其中早就实现好了该函数的功能。
系统把这些函数实现都被做到名为 libc.so.6 的库文件。

在这里插入图片描述

Linux调试工具 gdb的使用

release版本(发行版本) :不可调试,优化后
debug版本 (调试版本):可调式
在centos中 默认是release版本,所以我们要调试一个程序,一定要向该程序的二进制文件中加入debug信息(+ -g)。
gcc test.c -o test -g

gdb test进入调试(代码一定要跑起来才能调试)
r : run跑起来
l :list列出当前向下的10行代码,l n 列出第n行向后的10行
s:逐语句
n:逐过程
display tmp : 查看变量tmp的值 (常显示,并且会在行首形成编号)
display &tmp : 查看变量tmp的地址 (常显示,并且在行首形成编号)
undisplay x : 不显示编号为x的变量
b n : 在第n行设置断点
info b : 查看断点信息
d x : 删除编号为x的断点
disable x : 禁用编号为x的断点
enable x : 启用编号为x的断点
bt : 查看调用堆栈
set var tmp = 10 : 将代码中tmp的值改为10

Linux项目自动化构建工具make 和 makefile

在完成大型项目的时候,会有几万个源文件,我们不可能每个文件都去使用指令gcc,,,去编译。
所以这路借助make和makefile来完成
make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建

在这里插入图片描述

进度条程序的编写

铺垫一下:
c程序都会默认打开三个输入输出流:stdin(标准输入),stdout(输出),stderr(标准错误)。
其实显示器上的内容都是字符串。
从键盘中读取的内容有全部都是字符串。
在这里插入图片描述

    #include<stdio.h>2 #include <unistd.h> //fflush,usleep的头文件                                                                                                  3 int main()                             4 {                                      5   char buff[101] = {0};                6   char ch[] = "/|\\-";                 7   int i = 0;                           8   for(i = 0; i < 100; i++)             9   {                                    10     buff[i] = '#';                     11     printf("[%-100s][%d%%][%c]\r",buff,i+1,ch[i%4]);//\r的作用是回到行首12     fflush(stdout); //刷新显示器                                         13     usleep(70000); //停屏 单位是纳秒                                     14   }                                                                      15                                                                          16   return 0;                                                              17 }                                                                        
~       

http://chatgpt.dhexx.cn/article/VF13EGG6.shtml

相关文章

Linux开发工具

目录 一、yum工具 1.yum 背景知识 &#xff08;1&#xff09;商业生态 &#xff08;2&#xff09;开源生态 &#xff08;3&#xff09;软件生态本土化 2.yum 的基本使用 &#xff08;1&#xff09;查看软件包 &#xff08;2&#xff09;软件包名称构成 &#xff08;3&a…

【linux】linux开发工具的使用

linux开发工具的使用 一、linux软件管家-yum1.1 软件包的概念1.2 yum的使用1.2.1 查看安装包1.2.2 安装软件1.2.3 卸载软件 二、linux下的编辑器-vim2.1 插入模式下的命令2.2 命令模式下的命令2.3 底行模式的命令2.4 vim的配置 三、linux下的编译器-gcc/g3.1 预处理3.2 编译3.3…

Linux系统:开发工具

开发工具 如 Visual Studio、IDEA 这样的集编写编译调试运行以及各种复杂功能于一身的开发工具&#xff0c;叫做集成开发环境 IDE。Linux 下一般使用代码编辑工具 vi/vim&#xff0c;编译工具 gcc/g&#xff0c;调试工具 gdb。 1. 编辑工具 vim vim&#xff0c;它是一款十分强…

Linux的开发流程

嵌入式linux开发流程 在嵌入式学习的过程中&#xff0c;嵌入式linux的学习是不可少的&#xff0c;可以说嵌入式linux是学习比较困难的&#xff0c;会遇到各种各样的问题&#xff0c;那么嵌入式linux学习有一个重要的点就是嵌入式linux开发的流程&#xff0c;这是必须要知道的&a…

Linux开发速记教程之第一篇

一、Linux职业方向 ①、服务器运维&#xff1b;②、应用软件开发&#xff1b;③、设备驱动开发。 二、设备驱动开发 Linux 系统的一个重要设计哲学是一切皆文件。包括硬件设备&#xff0c;对于系统来说也是一个文件&#xff0c;所以系统向上层应用程序提供 open、 write、 re…

Linux开发工具详解

目录 前言一.Linux编辑器-vim使用1.vim的基本概念2.vim命令模式命令集3.vim底行模式命令集4.简单的vim配置 二.Linux编译器-gcc/g使用1.背景知识2.gcc如何完成a.预处理(进行宏替换)b.编译(生成汇编)c.汇编(生成机器可识别代码)d.链接(生成可执行文件或库文件)e.重要概念f.动态链…

直接跳转与间接跳转

转载自: https://www.csdn.net/tags/MtjaIg1sNDE1MDYtYmxvZwO0O0OO0O0O.htmlhttps://www.csdn.net/tags/MtjaIg1sNDE1MDYtYmxvZwO0O0OO0O0O.html 正常执行的情况下&#xff0c;指令按照它们出现的顺序一条一条地执行。跳转(jmp)指令会导致执行切换到程序中一个全新的位置。 …

Vue路由跳转传参或打开新页面跳转

1. 通过路由中的name属性 使用params传递参数, 使用this.$route.params获取参数 这种方式传递相当于post请求, 传递的数据不会显示在url地址栏,但是页面刷新,参数会丢失 1 2 3 4 5 6 7 8 9 // 传递参数 this.$router.push({ name: "首页", params: { …

Nginx 跳转

目录 一.Nginx常见模块1.http2.server3.location 二.location1.一般分为普通和正则2.location 常用的匹配规则3.location 示例4.location优先级排列说明 三.REWRITE模块1.功能2.跳转场景3.跳转实现4.执行顺序5.语法格式6.实例6.1域名跳转6.2基于客户端IP 访问跳转6.3基于旧域名…

pyqt5的页面跳转

前言&#xff1a; 正在学习python&#xff0c;学到了文件读取操作&#xff0c;想用pyqt5实现一下&#xff0c;发现我对于pyqt5还是不够了解。 现在记录一下我用pyqt5实现页面跳转的过程 方便以后查阅 pycharm使用pyqt5的话建议解释器用python3.7 由于目前我的水平还是太菜&…

div链接跳转

1、先建立一个div 2、给div写个id&#xff0c;直接写个go吧&#xff0c;再写个class&#xff0c;就叫go1吧 3、给它里面写个你要跳转的网址名称 4、给它设置个样式&#xff0c;弄个黑色背景什么的 5、然后把字体调成白色&#xff0c;文字居中 6、这是目前这个div的样子 7、接着…

layui页面跳转

//模拟单页跳转 $(document).ready(function(){ $(“dd>a”).click(function (e) { e.preventDefault(); $("#iframeMain").attr(“src”,$(this).attr(“href”)); }); }); 逻辑&#xff1a;通过jq拿a的href值放到iframe的src属性上 解释&#xff1a; e.preventD…

html-超链接跳转-外部和内部页面跳转

a标签表示超链接 1、通过a标签来表示超链接&#xff0c;点击超链接文本可以跳转到绑定的网站地址 1表示外部的地址 2表示内部的页面的访问地址&#xff0c;不是填写内部页面&#xff0c;内部页面访问地址

AS页面跳转

在MyAdapter中定义如下接口,模拟ListView的OnItemClickListener&#xff1a; //define interface public static interface OnItemClickListener { void onItemClick(View view , int position); } 1 2 3 4 声明一个这个接口的变量&#xff1a; private OnItem…

页面跳转的两种方式(转发和重定向)区别详解:

转发和重定向的路径问题(重点) 1&#xff09;使用相对路径在重定向和转发中没有区别 2&#xff09;重定向和请求转发使用绝对路径时&#xff0c;根/路径代表了不同含义 重定向response.sendRedirect(“xxx”)是服务器向客户端发送一个请求头信息&#xff0c;由客户端再请求一次…

go语言web开发系列之八:gin框架中用go-redis缓存数据

一&#xff0c;安装需要用到的库 1,安装go-redis liuhongdiku:~$ go get -u github.com/go-redis/redis 说明&#xff1a;刘宏缔的go森林是一个专注golang的博客&#xff0c; 网站&#xff1a;https://blog.imgtouch.com 原文: go语言web开发系列之八:gin框架中用go-redis缓…

go语言web开发系列之二十一:用go-qrcode库生成二维码

一&#xff0c;安装用到的库 1,go-qrcode库的地址 GitHub - skip2/go-qrcode: :sparkles: QR Code encoder (Go) 2&#xff0c;安装go-qrcode库 liuhongdiku:~$ go get -u github.com/skip2/go-qrcode/... 3,resize库的地址&#xff08;在二维码中间放icon时太大时需要缩放…

go语言web开发出错

2019独角兽企业重金招聘Python工程师标准>>> err listen tcp :8080: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted. 原因&#xff1a;开了两个服务器&#xff0c;造成监听端口冲突 转载于:https://my.osc…

go语言有哪些web框架

前言 由于工作需要&#xff0c;这些年来也接触了不少的开发框架&#xff0c;Golang的开发框架比较多&#xff0c;不过基本都是Web”框架”为主。这里稍微打了个引号&#xff0c;因为大部分”框架”从设计和功能定位上来讲&#xff0c;充其量都只能算是一个组件&#xff0c;需要…

go语言服务器代码,Go语言开发简单web服务器

欢迎&#xff0c;来自IP地址为&#xff1a;182.103.254.107 的朋友 Go语言由于其方便的并发通信机制以及强大的网络支持&#xff0c;常常被用于服务器软件的开发。本文将示例使用Go语言来开发简单的Web服务器。 HTTP协议是应用层协议&#xff0c;协议模型位于TCP之上&#xff0…