Linux环境基础开发工具的使用

vim编辑器的基本操作:

在linux环境下输入vim 文件名就可以进入编辑模式.

 上述四种模式必须退到命令模式才能进行下一个模式.


 在编辑器中写完之后,输入ESC进入命令模式,然后再输入shift+:进入低行模式并输入wq保存并退出.

在命令模式下的操作:

光标所在行:1.输入yy进行复制, 输入p粘贴, 输入u撤销, 输入dd和p进行剪和切. n+dd和n+p进行多行剪和切.

光标定位:1.shift+g定位到结尾,2.gg定位到最开始,3.n+shift+g定位到第n行,4.shift+4光标快速定位到行尾.5,shift+6定位到行首,6.在光标位置处w按单词走,b按单词退.

在命令行:1.x(光标所在位置逐字符向后删除),2.n+x(光标所在位置删除n个字符),3.shift+x(光标所在位置向前删除),4.n+shift+x(光标所在位置向前删除n个字符),5.shift+~(光标所在位置大小写切换),6.r+字符(将原来的替换为字符),7.n+r+字符(将原来的替换为10个字符).


在插入模式下:

输入a/i进入插入模式.

输入o进入插入模式并另起一行.


在低行模式下:

输入set nu(调出行号).

set nonu(取消行号).

w(保存);q(直接退出);wq(保存并退出);wq!(强制保存并退出);q!(强制退出)


在命令行模式下进行注释:
ctrl+v => 按键k =>shift+i =>// =>ESC

ctrl+v  =>n+shift+g =>shift+i =>// =>ESC(注释n行)

ctrl +v =>l(选中两列) =>往下拉 =>d(取消注释)


gcc编译运行代码:

方法1:gcc  -o code  code.c  =>  ./code;

方法2:gcc code.c code   =>./code;


gcc如何完成:

1.预处理(进行宏替换)

gcc -E code.c -o code.i(开始进行程序翻译,预处理完停下来)

2.编译(生成汇编)

gcc -S code.i  -o  code.s(开始进行程序翻译,编译完停下)

3.汇编(生成机器可识别的代码)

gcc -c code.c -o code.o)

4.连接(生成可执行文件)

gcc -o code code.o(目标文件和标准库进行关联,构成可执行程序)


自动化构建工具make/makefile:

make:一条命令.

makefile:一个文件.

用法如下所示:

1.touch Makefile(创建一个文件Makefile)

2.vim Makefile(对文件进行编辑)

3.在Makefile中输入:prop :prop.c(prop是目标文件,prop.c是依赖文件列表)[依赖关系]

                                        gcc -o prop prop.c[依赖方法]

4.输入make

5.输入./prop运行程序


清理项目:(直接在Makefile中继续输入)

.PHONY:clean

clean:

        rm -f prop

然后输入make clean进行清理


makefile文件会被make从上到下开始扫描,第一个目标是缺省要形成的.直接输入make即可,如果要执行其他依赖关系和依赖方法,要输入make+name

如下所示:

prop:prop.o

        gcc prop.o -o prop

prop.o:prop.s

        gcc -c prop.s -o prop.o

prop.s:prop.i

        gcc -S prop.i -o prop.s

prop.i:prop.c

        gcc -E prop.c -o prop.i

make解释makefile时会自动推导,一直推导,推导过程不会执行依赖方法,直到推导有依赖文件存在时然后逆向执行所有依赖文件


prop:prop.o

        gcc prop.o -o prop

prop.o:prop.s

        gcc -c prop.s -o prop.o

prop.s:prop.i

        gcc -S prop.i -o prop.s

prop.i:prop.c

        gcc -E prop.c -o prop.i

变形为:

prop:prop.o

        gcc prop.o -o prop

prop.o:prop.c

        gcc -c prop.c

变形为:

prop:prop.o

        gcc prop.o -o prop

%.o:%.c

        gcc -c $<

其中%.c指的是当前目录下所有.c文件展开到依赖列表中.

$<(依赖关系):右侧的依赖文件列表一个个的交给gcc -c选项,形成同名的.o文件.

变形为:

bin=proc

src=proc.c

$(bin):$(src)

        gcc $^ -o $@

%.o:%.c

        gcc -c $<

其中$^指的是所有依赖文件列表,$@指的是所有目标文件.

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/881783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

golang语法

参考链接&#xff1a;https://www.runoob.com/go/ 创建变量 // 3种方法 var a int a : 10 // 类型推断 a : make() // 复合类型循环 // 3种循环 for i : 0; i < 10; i {// 循环体} // 传统for循环 for index, num : range nums {// 循环体} // nums是可迭代的复合类型…

ubuntu24 root用户修改密码 ubuntu新系统没有创建root用户

ubuntu 系统在虚拟机新建一个ubuntu24&#xff0c;但是在配置系统时候&#xff0c;并没有配置root密码&#xff0c;只是新增了一个自定义账号于密码&#xff0c;在创建好后&#xff0c;可以登录系统&#xff0c;设置root密码~ 1. ubuntu系统初始化后&#xff0c;登录自建账号 …

k8s介绍-搭建k8s

Kubernetes介绍&#xff0c;官网&#xff1a;Kubernetes 应用部署方式演变 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上 优点&#xff1a;简单&#xff0c;不需要其他技术的参与 缺点&#xff1a;不能为应用程序定义资源使用边界&#xff0c…

【C++网络编程】(一)Linux平台下TCP客户/服务端程序

文章目录 Linux平台下TCP客户/服务端程序服务端客户端相关头文件介绍 Linux平台下TCP客户/服务端程序 图片来源&#xff1a;https://subingwen.cn/linux/socket/ 下面实现一个Linux平台下TCP客户/服务端程序&#xff1a;客户端向服务器发送&#xff1a;“你好&#xff0c;服务…

从零创建苹果App应用,不知道怎么申请证书的可以先去看我的上一篇文章

用大家自己的开发者账户&#xff0c;登录进入App Store Connect ,注册自己的应用 进入之后&#xff0c;点击增加 填写相关的信息 一切顺利的话&#xff0c;就可以来到这个页面

得了自闭症怎么办

当孩子被诊断为自闭症时&#xff0c;家长们往往会感到迷茫、无助和焦虑。然而&#xff0c;自闭症并不是无法逾越的障碍&#xff0c;通过科学的干预和支持&#xff0c;自闭症儿童可以取得显著的进步&#xff0c;过上有质量的生活。在这个过程中&#xff0c;专业的机构如星贝育园…

取消apply_async调度的任务

在 Celery 中&#xff0c;使用 apply_async 方法调度的任务可以通过任务 ID 来取消。以下是如何取消 apply_async 调度的任务的详细步骤&#xff1a; 1. 获取任务 ID 当你使用 apply_async 方法调度任务时&#xff0c;它会返回一个 AsyncResult 对象&#xff0c;该对象包含任…

C++ 面向对象、特征、重载和重写、构造和析构、向上和向下转型、深浅拷贝。

什么是面向对象&#xff08;Object-Oriented Programming, OOP&#xff09; 1.面向对象是一种编程范式&#xff0c;它通过将软件系统的设计和开发分解为“对象”&#xff08;Object&#xff09;的方式来实现更好地组织代码。面向对象的核心思想是将程序的结构分为对象&#xf…

element plus的el-select分页

摘要&#xff1a; el-select的数据比较多的时候&#xff0c;必须要分页&#xff0c;处理方案有全部数据回来&#xff0c;或者添加搜索功能&#xff0c;但是就有个问题就是编辑的时候回显问题&#xff0c;必须要保证select的数据有对应的id与name匹配回显&#xff01; <el-fo…

计算机网络-VRRP实验配置

前面我们大致学习了VRRP的概念和基本原理&#xff0c;但是网络这块就是要多敲命令多用才能印象深刻&#xff0c;今天开始进行一些实验配置&#xff0c;结合日常工作的场景分析VRRP在实际工作中的应用。 一、典型VRRP虚拟网关拓扑 相比于传统单网关&#xff0c;采用VRRP虚拟网关…

Qt/C++编写的mqtt调试助手使用说明

一、使用说明 第一步&#xff0c;选择协议前缀&#xff0c;可选mqtt://、mqtts://、ws://、wss://四种&#xff0c;带s结尾的是走ssl通信&#xff0c;ws表示走websocket通信。一般选默认的mqtt://就好。第二步&#xff0c;填写服务所在主机地址&#xff0c;可以是IP地址也可以…

2024.10月11日--- SpringMVC拦截器

拦截器 1 回顾过滤器&#xff1a; Servlet规范中的三大接口&#xff1a;Servlet接口&#xff0c;Filter接口、Listener接口。 过滤器接口&#xff0c;是Servlet2.3版本以来&#xff0c;定义的一种小型的&#xff0c;可插拔的Web组件&#xff0c;可以用来拦截和处理Servlet容…

Python 自动排班表格(代码分享)

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

CentOS安装NVIDIA驱动、CUDA以及nvidia-container-toolkit

0.提前准备 0.1.更新yum源&#xff08;以阿里为例&#xff09; 0.1.1 备份当前的yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 0.1.2 下载新的CentOS-Base.repo 到/etc/yum.repos.d/ CentOS 5 wget -O /etc/yum.repos.d/CentOS-Base…

Java比较两个Excel是否内容一致

领导每天让比较两个Excel中的内容&#xff0c;为了节省工作效率多摸鱼&#xff0c;就写了个java接口&#xff0c;通过上传两个文件 进行代码比较得到详细的比较结果(这个需要自己根据日志二开) 目前只实现了比较功能 话不多说直接上代码&#xff0c;具体看注释 package com.yx…

ORM框架简介

什么是ORM&#xff1f; ORM&#xff08;Object-Relational Mapping&#xff0c;对象关系映射&#xff09;是一种编程技术&#xff0c;用于在关系数据库和对象程序语言之间转换数据。ORM框架允许开发者以面向对象的方式来操作数据库&#xff0c;而不需要编写复杂的SQL语句。简单…

2. 继承Mono的单例模式基类

前提 继承MonoBehaviour的脚本不能new继承MonoBehaviour的脚本一定得依附在GameObject上 实现挂载式的单例模式基类 挂载式 继承Mono的单例模式基类 /// <summary> /// 挂载式 继承Mono的单例模式基类 /// </summary> /// <typeparam name"T">&…

B2050 三角形判断

题目描述 给定三个正整数&#xff0c;分别表示三条线段的长度&#xff0c;判断这三条线段能否构成一个三角形。 输入格式 输入共一行&#xff0c;包含三个正整数&#xff0c;分别表示三条线段的长度&#xff0c;数与数之间以一个空格分开。&#xff08;三条边的长度均不超过…

【Linux】命令行下的增删查改之“查看”

致谢:Linux常用命令大全(手册) – 真正好用的Linux命令在线查询网站 提供的命令查询 头部内容获取(head) head命令的功能是显示文件开头的内容&#xff0c;默认值为前10行。 指令参数&#xff1a; -n 定义显示行数 -c 指定显示头部内容的字符数 -v 总是显示文件名的头信…

尚硅谷rabbitmq2024 工作模式路由篇 第11节 答疑

String exchangeName "test_direct"; /! 创建交换机 人图全 channel.exchangeDeclare(exchangeName,BuiltinExchangeType.DIREcT, b: true, b1: false, b2: false, map: null); /1 创建队列 String queue1Name "test_direct_queue1"; String queue2Name &q…