linux中基础开发工具的使用

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

1.linux中的软件包管理器

1.1什么是软件包

在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系.yum(Yellow dog Updater, Modifified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上。

1.2具体使用

当然在开始介绍前我先提醒一下,如果想要使用yum指令的话必须要保持网络通畅,且安装和删除都在在root或者使用sudo来执行

查看软件包:

yum list | grep lrzsz

安装软件:

sudo yum install lrzsz

删除软件:

sudo yum remove lrzsz

2.vim文本编辑器

2.1正常开发流程

在我们正式开始讲解之前我们先回顾一下整个开发的这样一个流程

编写代码

编译代码

调试代码

发布运行代码

代码关系的维护

而我们的vi/vim干的就是编写代码的工作,定位上来说和记事本没什么区别,通常情况下,许多Linux发行版都会默认安装Vim,因为它是一个非常流行和功能强大的编辑器。(vim是vi的升级版)

2.2vim的四种模式

普通/命令模式:默认下的模式,退出按 shift : q (回车)

插入模式:用户可以像在其他编辑器中一样输入文本,在命令模式下输入i/a/o 可以进入此模式,按esc可回到命令模式

底行模式:shift : 进入此模式 ,输入w保持 , q退出 ,!强制 (也只能在命令模式下进入)

可视模式:在可视模式下,用户可以选择文本进行操作,例如复制、删除、替换等。可视模式可以通过按下 v 进入。(也只能在普通模式下)

2.3一些常见光标的使用(在命令模式下使用)
具体功能 快捷键
让光标跳到当前行的行首 shift ^
让光标跳到当前行的行尾 shift $
跳转到所有代码的起始行 gg
跳转到所有代码的结束行 shift g
跳转到指定行 n(具体行数) shift g (都要按住不放手)
w/b 单词为单位进行前/后移动
2.4文本操作(也是在命令模式下使用)
具体功能 快捷键
复制当前行 yy
复制n行(包括当前行) nyy
撤销 y
粘贴 p/np(重复粘贴n次)
删除光标所在行 dd
剪切功能 dd删除之后直接p或者np
快速大小写切换 shift ~ (光标指向的小写变成大写)
删除光标之后的一个字符/n个字符 x/nx
从光标的右向左删 X
替换一个光标所在的字符/或者n个字符 r/nr 然后输入你想替换的内容
进入替换模式 进入:shift r 退出:esc
撤销最近的撤销 ctrl r
2.5底行命令的一些操作
具体功能 快捷键
调出行号 set nu
取消行号 set nonu
分屏 vs 所创分配文件名 (q:退出当前窗口)
光标跳转 ctrl w
不退出vim照样编译程序 !./可执行文件名
不退出vim查手册 !man
2.6一些注意事项

vim配置在用户自己的配置文件中,只会影响自己的操作,root管理员有自己的vim配置,至于如何配置不同版本会有不同方法,这些内容在网上都有这里就不一一赘述了。

3.gcc编译

3.1实战使用

当我在一个文件当中写完代码,然后输入 gcc文件名 ,接着当前的目录下会生成一个a.out已经编译完成的文件,接着./a.out运行即可。

例子(这里我已经写好的文件名为test6.c):

linux中基础开发工具的使用

另一种生成可执行文件的法子:

gcc mytest.c -o mytest / gcc -o mytest mytest.c (mytest.c为已经写好的文件,mytest为编译好的可执行程序)
linux中基础开发工具的使用

3.2程序编译的具体过程

首先在我们讲解具体操作时,我们先来复习一下程序编译的4个阶段:

  • 预处理(进行宏替换)

    预处理功能主要包括宏定义,文件包含,条件编译,去注释等。

    预处理指令是以#号开头的代码行。

    实例: gcc –E hello.c –o hello.i

    选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。

    选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序。

  • 编译(生成汇编)

    在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查

    无误后,gcc 把代码翻译成汇编语言。

    用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。

    实例: gcc –S hello.i –o hello.s

  • 汇编(生成机器可识别代码)

    汇编阶段是把编译阶段生成的“.s”文件转成目标文件

    读者在此可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了

    实例: gcc –c hello.s –o hello.o

  • 链接(生成可执行文件的库文件)

    在成功编译之后,就进入了链接阶段。

    实例: gcc hello.o –o hello

    而链接过程又涉及一个很重要的概念:函数库

    我们的C程序中,并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而

    没有定义函数的实现,那么,是在哪里实“printf”函数的呢?

    其实系统把这些函数实现都被做到名为 libc.so.6 的库文件中去了,在没有特别指定时,gcc 会到

    系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到 libc.so.6 库函数中去,这样就能实现函

    数“printf”了,而这也就是链接的作用。

3.3动静态库

我们的库分为两者:

  1. 静态库(文件后缀名为.a)
  2. 动态库(文件后缀名为.so)

静态链接库在编译时被链接到目标程序中,整个库的内容都被复制到目标程序中,使得目标程序可以独立运行,不需要依赖于其他的库文件。由于静态链接库的内容都被复制到目标程序中,因此目标程序的体积会变大。同时,由于每个目标程序都复制了一份库文件,因此在磁盘空间和内存使用方面可能会造成浪费。

动态链接库则是在运行时才被加载到内存中,并被多个程序同时共享使用,这样就能够避免静态链接库造成的浪费。动态链接库在磁盘上只有一份,多个程序可以同时引用它,从而降低了磁盘空间的占用。此外,由于动态链接库是在运行时加载的,因此可以动态地升级和替换库文件,这使得软件更新更加方便。

因此,静态链接库和动态链接库各有优缺点,开发者需要根据具体的需求来选择。一般来说,对于一些比较稳定的库文件,可以选择静态链接库,而对于一些常用的库文件,可以选择动态链接库,以便提高代码的重用性和可维护性。

tips:查看依赖库指令ldd mytest

4.gdb使用讲解(调试)

4.1具体操作

进入gdb模式:gdb 可执行文件

特别提醒:如果一个程序是可以被调试的,该程序的二进制文件一定加入了一些debug信息,而在linux下默认形成的文件是release版本的。

为了变成debug版本,应输入以下指令gcc mytest.c -o mytest -g

4.2模式下的操作
指令 效果
run 直接运行
l 行号 显示行号后的代码
b 行号 在行号处打断点
info b 显现所打断点其情况
s 逐语句调试
n 逐过程
display 名字 显示变量值
undisplay 编号(一定要用编号) 使编号不显示
finish 结束当前函数
continue 直接进入下个断点
until 跳转到指定行
set var 变量名 修改变量值

5.linux自动化构建工具Makefile

makefile本质就是一个文件 其中包含:编译关系和依赖方法

举个例子:使用vim 写一个 makefile的文件如下(.phony 为修饰一个对应的符号,让符号变成伪目标的概念)

linux中基础开发工具的使用

然后输入指令make

可编译文件mytest就生成了 (如果使用的是c99版本的代码 在 第二行 输入 -std = c99)

输入指令make clean

就将可编译文件mytest删除了

6.有趣的小程序进度条

6.1一个有趣的现象(缓冲区的初了解)

在mytest.c文件下写入这样一段文件:
linux中基础开发工具的使用

和这样一段:(其实就多了个\n)
linux中基础开发工具的使用

会观察到这样一个现象:前面的程序运行了5秒后输出了"Hello world",而后面的程序先输出了"Hello world",程序在运行了5秒,这是为什么呢?

原来printf里面的东西先会放在缓冲区内,而当我碰到\n时会立刻刷新到屏幕上(有关缓存区的具体讲解后面会有这里先做个简单了解)

6.2关于sleep函数的一些小注意

1、windows下的Sleep函数,首字母大写

#include <windows.h> 参数usigned long类型,为毫秒数

Sleep(1);

2、linux下的sleep函数,首字母小写

#include <unistd.h> 其参数为秒数

sleep(1);
(usleep 可以把单位变成微秒)

6.3进度条小程序源码(linux的vim下)
#include <stdio.h>
#include <unistd.h>
#include <string.h>

int main()
{
#define NUM 100
    char bar[NUM+1];
    memset(bar, '\0', sizeof(bar));

    const char *lable="|/-\\";

    int i = 0;
    while(i <= 100){
        printf("\033[31m[%-100s][%3d%%][%c]\r", bar, i, lable[i%4]);// \r(回车动作)
        fflush(stdout); //立刻刷新到屏幕上
        bar[i]='=';
        i++;
        usleep(50000);
    }
    printf("\n");

}

这里就不过多解释了,有一定代码基础的看懂很容易,放在linux上运行一下感受一下就行文章来源地址https://www.toymoban.com/news/detail-434442.html

到了这里,关于linux中基础开发工具的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【linux基础(五)】Linux中的开发工具(上)---yum和vim

    💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:Linux从入门到开通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学更多操作系统知识   🔝🔝 理解了Linux基本指令和权限之后 终于开始了与代码相关的工具的使用 想必各位早已听说过vim的大名,这篇文章 将带你深入浅

    2024年02月09日
    浏览(35)
  • 【linux基础(七)】Linux中的开发工具(下)--make/makefile和git

    💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:Linux从入门到开通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学更多操作系统知识   🔝🔝 如果你不知道什么是vim和gcc 请先阅读这两篇文章后再学习本节: 文章一: vim和yum 文章二: gcc/g++ 本章重点: 本篇文章会着重讲

    2024年02月08日
    浏览(35)
  • Linux基础开发工具之Linux自动项目构建工具的使用

    目录 前言 1.make/makefile 1.1 依赖关系/依赖方法 2.原理 3.项目清理  4.make的执行问题  5.相关简单的符号介绍 总结   之前给大家介绍了我们在开发过程中所需要使用到的编辑器vim,以及编译器gcc/g++的使用,但是我相信大家在使用过程会发现我们在每次编写好一份代码时总是需

    2024年02月13日
    浏览(42)
  • Linux环境基础开发工具使用(二)

    📘北尘_ :个人主页 🌎个人专栏 :《Linux操作系统》《经典算法试题 》《C++》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个

    2024年02月05日
    浏览(66)
  • linux中基础开发工具的使用

    1.linux中的软件包管理器 1.1什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很

    2024年02月02日
    浏览(62)
  • 【Linux】基础开发工具使用 --- gcc

    目录 预处理 编译 汇编 链接 函数库 协助记忆 🧋GCC(GNU Compiler Collection)是由GNU开发的编程语言编译器。GNU编译器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等。),说那么多就是一个编译器。平时写完的程序就是需

    2024年02月03日
    浏览(46)
  • 【Linux】环境基础开发工具使用(万字汇总)

    🎇Linux:环境基础开发工具使用 博客主页: 一起去看日落吗 分享博主的在Linux中学习到的知识和遇到的问题 博主的能力有限,出现错误希望大家不吝赐教 分享给大家一句我很喜欢的话: 看似不起波澜的日复一日,一定会在某一天让你看见坚持的意义,祝我们都能在鸡零狗

    2024年02月05日
    浏览(47)
  • 【Linux】环境基础开发工具使用——gcc/g++使用

    1. 预处理(进行宏替换 ) 2. 编译(生成汇编 ) 3. 汇编(生成机器可识别代码) 4. 连接(生成可执行文件或库文件 ) 格式 gcc [ 选项 ] 要编译的文件 [ 选项 ] [ 目标文件 ] 预处理 ( 进行宏替换 ) 预处理功能主要包括宏定义 , 文件包含 , 条件编译 , 去注释等。 预处理指令是以 # 号

    2024年04月09日
    浏览(52)
  • 【Linux升级之路】2_Linux环境基础开发工具使用

    🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【Linux升级之路】 ✒️✒️本篇内容:Linux工具学前常识,Linux编辑器vim的使用,sudo提权指令讲解/配置,Linux编译器gcc/g++的使用,项目自动化构建工具make/makefile的使用,工具实践(小程序-进度条),Linux环境下git的使用

    2023年04月14日
    浏览(35)
  • Linux之基础开发工具gdb调试器的使用(三)

    📘北尘_ :个人主页 🌎个人专栏 :《Linux操作系统》《经典算法试题 》《C++》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 yum install -y gdb 程序的发布方式有两种,debug模式和release模式 Linux gcc/g++出来的二进制程序,默认是release模式,release模式下无法调试 要使用gd

    2024年02月05日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包