Linux最新[Linux打怪升级之路]-yun安装和gcc的使用_yum安装gcc,2024年最新双非渣本Linux运维四年磨一剑

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

  • 174 道运维工程师面试题
  • 128道k8s面试题
  • 108道shell脚本面试题
  • 200道Linux面试题
  • 51道docker面试题
  • 35道Jenkis面试题
  • 78道MongoDB面试题
  • 17道ansible面试题
  • 60道dubbo面试题
  • 53道kafka面试
  • 18道mysql面试题
  • 40道nginx面试题
  • 77道redis面试题
  • 28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

这里我们去卸载gcc

sudo yum remove lrzsz

3、yum的深度思考

上面我们知道yum怎么去查找软件包,安装和卸载软件,但是软件包又是从何处来的呢?

我们都知道在下载软件的时候都是联网的,也就说软件包并不是在本地,其实软件包是通过联网访问服务器。

那些服务器又是谁在维护,软件包又是怎么来的呢?

这就不得不说Liunx是个开源的操作系统,那么在一个操作系统中肯定要下载软件的,所以那么Liunx社区的大佬就会去维护服务器(当然不同的版本的操作系统,服务器可能不同),然后因为服务器是免费为大家提高的,所以自然会有些大佬乐于奉献去些软件包并上传到。

二、gcc的学习使用

前面我们在自己的服务器是安装的gcc,我们都知道vim仅仅只是个高级点的编辑器,他是不能完成对代码的编译链接的,这将要靠我们的gcc编译器去完成。

1、在Liunx下理解编译链接

下面我们简单回忆一下翻译的过程:

  • 预处理:这过程中我们完成对头文件的展开,去注释,对代码中的宏进行替换,进行条件编译。
  • 编译:把c语言代码转为汇编语言。
  • 汇编:这里将汇编语言在转换为二进制(这里虽然生成了计算机可识别的二进制,但是由于没有进行链接,所以仍然是不可执行的)。
  • 链接:将写好的代码和C标准库中的代码合起来。

下面我们在Linux操作系统下体会一下编译的过程

预处理

gcc -E test.c -o mytest.i

这句代码的意思是从现在开始翻译,当到预处理阶段的做完就停下来,其中的 -o是指明生成的临时文件名称。(如果我们不指向生成的文件名称为auto.c)

编译

gcc -S test.c -o mytest.s

这句代码表示,从现在开始程序的翻译 ,做完编译工作后就停下来。

汇编

gcc -c test.c -o mytest.o

这句代码表示,从现在开始程序的翻译 ,做完汇编工作,讲汇编语言转化为二进制语言后就停下来。

链接

gcc mytest.o  -o mytest.c

这里就对二进制文件进行链接过程,生成可执行文件。

2、函数库

虽然我们从上面了解到对程序翻译过程,但是在链接过程中我们要讲到C标准的库函数和我们写的代码会        合并到一起。为了更好的理解,我们还需要知道库函数是分为动态库和静态库这二类的。

静态库和动态库

  • 静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也 就不再需要库文件了。其后缀名一般为“.a”。
  • 动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时 链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”,

那么我们在Linux下进行的链接是动态库还是静态库呢?

下面我们可以通过file命令来查找一下文件信息:

而在此系统的动态库的名称为libc.so.6。

如果我们要让文件链接静态库怎么做呢?

这里我们只要在链接阶段加上 -static就可以了,但是发现报错了是不能执行这个命令,这是因为我们可能没有安装静态库只要我们安装一下就可以了(sudo yum -install -y glibc-static)。

3、makefile和make

首先我们要明白makefile是一个文件,make是一个配合makefile使用的命令。

背景知识

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

为了更好的理解makfile和make,我们在Linux写个小项目:进度条。

process.h

#pragma once
#include<stdio.h>
#include<unistd.h>
#include<string.h>
//定义进度条的多种展示形式
const char style[] = {'#','$','>','-','*'};
#define N 2              

process.c

 #include"process.h"

 int  main()
{
    int i = 0;
	//给一个字符数组存放进度条
    char bar[101];
	//这里给一个进度条在直观跑的形态
	const char* label = "|\\-/";
	memset(bar, 0, sizeof(bar));
	//展示进度条
	while (i <= 100)
	{
		printf("[%-100s][%d%%][%c]\r", bar, i, *(label + (i % 4)));
		//这里的是为刷新缓冲区                                                                                                                                                 
		fflush(stdout);
		bar[i++] = style[N];
		usleep(100000);
	}
	printf("\n");
	return 0;
 }

这里我们写好了代码,正常情况下,我们只要用gcc编译器编译就好了,但为了实现项目的自动化构建,所以我们就要使用makefile和make。

那么我们要在makefile文件定义什么呢?

我们主要在文件中定义清楚,依赖关系和依赖方法。

下面我将以进度条小项目进行分析:

上面我们可以看到由于我们要生成的process是依赖于proccess.c生成的,所以我们在第1行定义了文件之间的依赖关系。而依赖的方式我们是通过gcc编译器生成的。

这里我们要清楚的在对依赖方法进行编写的是多样的:

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

定义了文件之间的依赖关系。而依赖的方式我们是通过gcc编译器生成的。

这里我们要清楚的在对依赖方法进行编写的是多样的:

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Windows 上使用 MinGW-w64 安装 x86_64-linux-gnu-gcc 工具链和编译器,可以按照以下步骤操作: 1. 下载 MinGW-w64 安装器 可以从 MinGW-w64 官网(https://sourceforge.net/projects/mingw-w64/files/)下载 MinGW-w64 安装器。建议下载最新版本的稳定版(Stable Releases)。 2. 安装 MinGW-w64 运行 MinGW-w64 安装器,并按照提示进行安装。在安装过程中,需要选择以下配置: - Architecture:选择 x86_64。 - Threads:选择 posix。 - Exception:选择 seh。 - Build revision:选择最新版本。 - Destination folder:选择安装目录,例如 C:\mingw-w64。 3. 添加环境变量 将 MinGW-w64 的 bin 目录添加到 PATH 环境变量中。例如,如果 MinGW-w64 安装在 C:\mingw-w64 目录下,则需要将 C:\mingw-w64\bin 添加到 PATH 环境变量中。 4. 安装 x86_64-linux-gnu-gcc 工具链 使用 MinGW-w64 的 Pacman 包管理器安装 x86_64-linux-gnu-gcc 工具链。打开命令提示符或 PowerShell,进入 MinGW-w64 的 bin 目录,然后运行以下命令: ``` pacman -S mingw-w64-x86_64-gcc ``` 这将安装 x86_64-linux-gnu-gcc 工具链及其依赖项。 5. 验证安装 运行以下命令验证 x86_64-linux-gnu-gcc 工具链是否安装成功: ``` x86_64-linux-gnu-gcc --version ``` 如果输出 x86_64-linux-gnu-gcc 的版本信息,则说明安装成功。 注意:在使用 MinGW-w64 的 Pacman 包管理器安装软件包时,可能需要使用管理员权限运行命令提示符或 PowerShell。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值