linux开发工具

news2024/11/26 23:42:34

微信图片_20221007212918

文章目录

  • linux开发工具
    • 1.软件包管理器yum
    • 2.编辑器vim
    • 3.gcc
    • 4.make与makefile
    • 5.git
    • 6.gdb
    • 7.小程序进度条

linux开发工具

1.软件包管理器yum

yum等同于手机上的应用商店.yum自动解决软件之间的耦合问题

yum list 显示软件清单

yum install 下载

yum remove 删除

2.编辑器vim

image-20230113160338013

其中 w(保存) q(退出);

vim 命令模式操作

命令作用
光标命令
$到行右
^到行左
G底部
gg顶部
n+G跳转到第n行
hjkl左下上右
shift+=切换文本大小写
shift+r=R替换模式
nr替换光标所在字符 默认n=1;
x从光标位置向后删除
X从光标之前的位置向前删除
nyy复制光标所在行复制n行,默认n=1;
np粘贴n次,默认n=1;
ndd删除光标开始的n行,默认n=1; ndd+p为剪贴
u撤销
wb按单词移动,w向后移动 b向前移动
cnw默认n=1 更改光标所在单词
ctrl+r撤销u操作
i/a/o进入插入模式
set nu/nonu显示行号,关闭行号
ctrl+ww跨屏操作
!+命令强制执行
%s/printf/cout/g用cout替换printf

vim /etc/sudoers进入该文件,可以使为部分账户添加sudo功能

3.gcc

默认是release

程序翻译过程

image-20230114150859625

动静态链接

动态链接优缺点

动态库命名: libXXXX.so

  1. 形成的可执行程序较小
  2. 受库升级或者被删除影响

静态链接优缺点

静态库命名: libYYYY.a

  1. 不受库升级或者被删除影响
  2. 形成的可执行程序提交太大

默认生成的可执行程序为动态库,一般而言系统自带动态库.

sudo yum install glibc-static安装c的静态库

sudo yum install -y libstdc++-static安装c++的静态库

image-20230114154424594

image-20230114155211168

生成的可执行程序

4.make与makefile

  • 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力
  • 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的 规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂 的功能操作
  • makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编 译,极大的提高了软件开发的效率
  • make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命 令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make.可见,
  • makefile都成为了一 种在工程方面的编译方法。 make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。

image-20230114163103466

5.git

git版本控制器

git add将代码放到下载好的目录中

git commit -m 将代码放到本地仓库

git push 将代码同步到远端服务器

git log 显示提交记录

git pull 同步本地与远端服务器

git status 查看本地仓库状态

git mv 移动文件

git rm 删除文件

6.gdb

gdb是linux下的调试工具

gdb的使用

list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。

list/l 函数名:列出某个函数的源代码。

quit/q 退出

image-20230116204047843

break(b) 行号:在某一行设置断点 break 函数名:在某个函数开头设置断点

info break (i b):查看断点信息。

delete breakpoints(d):删除所有断点

delete breakpoints n(d n):删除序号为n的断点

image-20230116204215708

r或run:运行程序。

n 或 next:单条执行。

s或step:进入函数调用

continue(或c):从当前位置开始连续而非单步执行程序

finish:执行到当前函数返回,然后挺下来等待命令

until X行号:跳至X行

image-20230116204415279

info(i) locals:查看当前栈帧局部变量的值 quit:退出gdb

breaktrace(或bt):查看各级函数调用及参数

display 变量名:跟踪查看一个变量,每次停下来都显示它的值

undisplay:取消对先前设置的那些变量的跟踪

image-20230116204624751

7.小程序进度条

主要代码:

    1 #include "process.h"
    2 
    3 
    4 
    5 void Process()
    6 {
    7     char bar[101];
    8     char buffer[]={'|','/','-','\\'};
    9     int cnt=0;
   10     memset(bar,'\0',sizeof(bar));
   11     char tmp[]={'#','-','*'};
   12     while(cnt<=100)
   13     {
   14         printf("\033[47;33m[%-100s][%3d%%][%c]\r\033[0m",bar,cnt,buffer[cnt%4]);
   15         fflush(stdout);
   16         bar[cnt++]=tmp[N];                                                                                                                                                           
   17         //sleep(1);
   18         usleep(50000);
   19     }
   20     printf("\n");
   21 }



以下为效果运行图:

image-20230116210238848

image-20230116210252606

代码解释:

颜色输出可以网上找相关资料,这里不做解释,最右边的旋转棒,就如同上面代码所写就四个状态,每个数字对应每个状态,数值就按正常输出.#这一类输入,确定每次输出应该输出多少个,即数组中有多少#.\r使用原因,每次输出完,回车回到改行起点从而进行下一次的输出.

使用fflush()函数原因,printf并不会直接输出到屏幕上,当有间断符号时才会打印到屏幕.当有睡眠函数时,printf中没有\n的间断符号,所以屏幕上一直不会显示,从而使用fflush使其打印到屏幕上.
,就如同上面代码所写就四个状态,每个数字对应每个状态,数值就按正常输出.#这一类输入,确定每次输出应该输出多少个,即数组中有多少#.\r使用原因,每次输出完,回车回到改行起点从而进行下一次的输出.

使用fflush()函数原因,printf并不会直接输出到屏幕上,当有间断符号时才会打印到屏幕.当有睡眠函数时,printf中没有\n的间断符号,所以屏幕上一直不会显示,从而使用fflush使其打印到屏幕上.

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

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

相关文章

opencv开发之numpy使用

打开Spyder, 在IPython控制台中输入 import numpy as np 引入numpy库并使用numpy构造一个ndarray对象: np.zeros((2,4),np.uint8),该对象为一个二维数组 ,构造一个2行4列的二维数组(矩阵) ,并初始化所有元素为0,及指定数据类型为uint8 创建并初始化:数据可视化:取矩阵类型: typ…

基于YOLOv4的车辆检测 MATLAB实现

目录 摘要 研究背景 算法设计及实现过程 车辆目标数据集的构建 基于YOLOv4的目标检测 对YOLOv4模型进行改进 实验结果及分析 结论与展望 代码实现 摘要 针对车辆检测&#xff0c;本文提出了一种基于YOLOv4车辆检测算法。制作了一个多天侯、多时段、多场景的车辆目标数…

怎么拆分PDF文件,教你用最简单的方法

PDF文档拆分是一种很常见的需求。因为有时候文档页数过多&#xff0c;打开和阅读都不太方便&#xff0c;我们可以通过拆分把想要的部分提取出来。拆分PDF的时候可以借助一些工具更快更有效地达成目的&#xff0c;这里就给大家介绍几款比较受欢迎的处理工具&#xff0c;它们在辅…

Linux——系统管理篇

1、、Linux 中的进程和服务 计算机中、一个正在执行的程序或命令&#xff0c;叫进程&#xff08;process&#xff09;。 启动之后一直存在、常驻内存的进程&#xff0c;一般称为“服务”&#xff08;Service&#xff09; // 我更喜欢叫它守护进程 Daemon 比如windows的那一堆…

软件测试面试,如何自我介绍?

01 如何自我介绍 面试过程中一定要放慢语速&#xff0c;做到条理清晰。特别是做自我介绍时&#xff0c;可以适当多介绍自己会什么&#xff0c;有哪些重要经验。 例如&#xff1a; 面试官&#xff0c;上午/下午好。 我是XXX&#xff0c;今天来面试贵公司的软件测试工程师岗位&a…

利用QT 的 Graphics View 系统实现一个 简易的 Graph Editor

QT 中的 Graphics View 系统. 是一个相对成熟的渲染引擎的上层框架&#xff0c;通常也可以会叫做 Scene - View。 通常会有 QGraphicsView, QGraphicsScene, QGraphicsItem 这几个类构成。 view是视口(viewport)&#xff1b;scene是一个场景&#xff0c;负责容纳各种item&…

JS语言基础

目录 语法 关键字与保留字 变量 var关键字 let声明 暂时性死区 全局变量 for循环中的let声明 条件声明 const声明 语法 1. 区分大小写 无论是变量、函数名还是操作符&#xff0c;都区分大小写。 2. 标识符 所谓标识符&#xff0c;就是变量、函数、属性或函数参数的名…

centos7配置(nvidia+cuda+cudnn+anaconda+tensorflow)gpu开发环境

一、安装准备 1、查看nvidia显卡&#xff0c;我的是T4显卡 lspci | grep -i nvidia2、查看linux系统版本 uname -m && cat /etc/redhat-release3、安装依赖 yum install gcc kernel-devel kernel-headers二、安装nvidia驱动 1、禁用nouveau lsmod | grep nouveau…

Powershell渗透框架

文章目录Powershell基础Powershell简介什么是 Windows PowerShell为什么使用 Windows PowerShell如何启动 Windows PowerShellPowerShell和Cmd命令提示符的区别PowerShellcmd管理员运行 PowerShellWindows PowerShell ISE创建并运行脚本文本编辑器创建脚本集成脚本环境创建脚本…

第二章.线性回归以及非线性回归—特征缩放,交叉验证法,过拟合

第二章.线性回归以及非线性回归 2.9 特征缩放 1.数据归一化 1).作用&#xff1a; 把数据的取值范围处理为0-1或者-1-1 2).数据范围处理为0-1之间的方法&#xff1a; newValue(oldValue-min)/(max-min) 例如&#xff1a;数组:&#xff08;1,3,5&#xff09;,value1:(1-1)/(5-1)0…

MyBatis-Plus分析打印SQL(开发环境)

项目创建POM依赖 <!-- https://mvnrepository.com/artifact/p6spy/p6spy --> <dependency><groupId>p6spy</groupId><artifactId>p6spy</artifactId><version>3.9.1</version> </dependency> YML配置 spring:datasource…

silicon labs Gateway HOST-NCP MQTT网关搭建

一、背景 目前正在开发一款中控网关,网关mcu跑Android系统,NCP采用EFR32MG21开发板,需要跑MQTT协议控制zigbee的网络。基于以上需求,下载了simplicity studio V5版本和最新的EmberZNet 7.2.0.0协议栈进行验证,发现新的GSDK已经不再支持MQTT功能,官方回答是EmberZNet 6.7…

论文解读 - 城市自动驾驶车辆运动规划与控制技术综述 (第2部分)

文章目录&#x1f697; II. Overview of the decision-making hierarchy used in driverless cars&#xff08;无人驾驶汽车的决策层综述&#xff09;&#x1f534; A. Route Planning&#xff08;路径规划&#xff09;&#x1f7e0; B. Behavioral Decision Making&#xff08…

论文工具大全+软件简介

文章目录**1.使用说明用哪个文库就打开&#xff0c;****2.在软件中复制粘贴网址点下载**3.点已下载文件右击鼠标另外保存**腾讯微云-https://share.weiyun.com/5U3fAjF**1.安装并上传论文点检测2.检测等待时间3.打开检测报告查看回复[文献]&#xff1a;参考文献自动生成器参考文…

贪心算法专题

1.Acwing 1055. 股票买卖 II 题目链接&#xff1a;1055. 股票买卖 II - AcWing题库 思路&#xff1a;逢涨就买 #include<iostream> using namespace std;int main() {int n;long long ans0;int a[100005];cin>>n;cin>>a[0];for(int i1;i<n;i){cin>&…

C语言—动态内存管理

专栏&#xff1a;C语言 个人主页&#xff1a;HaiFan. 专栏简介&#xff1a;本专栏主要更新一些C语言的基础知识&#xff0c;也会实现一些小游戏和通讯录&#xff0c;学时管理系统之类的&#xff0c;有兴趣的朋友可以关注一下。 动态内存管理前言一、为什么会存在动态内存分配二…

磨金石教育分享||CG特效技术主要应用在哪几个领域

前面我们介绍了很多关于CG特效的知识&#xff0c;我们知道CG特效发展的历史以及重大意义。那么我们今天再来详细讨论一下CG特效主要应用的几个领域。近几年文化艺术的发展伴随着互联网信息技术高速传播。文化艺术产业变得多元&#xff0c;动漫、3A大作游戏、商业大片、虚拟现实…

Java 元注解

​ 元注解是负责对其它注解进行说明的注解&#xff0c;自定义注解时可以使用元注解。Java 5 定义了 4 个注解&#xff0c;分别是 Documented、Target、Retention 和 Inherited。Java 8 又增加了 Repeatable 和 Native 两个注解。这些注解都可以在 java.lang.annotation 包中找到…

前端压缩图片为指定宽高

压缩图片原理 通过原生的input标签拿到要上传的图片文件将图片文件转化成img元素标签在canvas上压缩绘制该HTMLImageElement将图片转化为一个包含图片展示的data URI&#xff0c;即图片被转换成base64编码的字符串 实现 通过原生的input标签拿到上传的图片文件 css部分<…

Linux 通过监控监控系统内存并定时重启指定服务

一、使用Free命令监控系统内存 1.1 查看系统内存情况 free -m1.1.1 获取空闲物理内存 echo Mem-free: `free -m | grep Mem | awk {print $4}`M1.1.2 获取缓冲区内存