【Linux指令sudo与Linux编译器-gcc/g++】

news2024/11/15 9:29:14

目录

  • 一、sudo
    • 1.1为什么我用不了sudo命令
    • 1.2如何将普通用户添加到信任列表里面
  • 二、Linux编译器-gcc/g++使用
    • 2.1背景知识
    • 2.2gcc如何完成上面的4个功能?
    • 2.3函数库

一、sudo

sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。
但是为什么我们的sudo指令用不了?如:
在这里插入图片描述

1.1为什么我用不了sudo命令

使用sudo命令的根本原因是为了暂时提升当前用户权限,而root用户基本上不受权限影响,所以是可以随便使用sudo命令的,但每个普通用户却不一定都能使用sudo命令,因为普通用户要受权限影响,只有被root用户添加到信任列表里面的人才可以用sudo命令,因为root用户也怕你拿着他的权限去到处瞎搞。

1.2如何将普通用户添加到信任列表里面

第一步:用root用户进入 /etc/sudoers 这个文件

指令:vim /etc/sudoers

进入后的界面是这样的。如:
在这里插入图片描述
第二步:找到添加白名单的地方,并添加白名单成员。如:
在这里插入图片描述
第三步:强制保存并退出。如:
在这里插入图片描述

命令:wq!

注意:直接保存是保存不了的,就算root用户也不行。
最后:回到普通用户来验证下,发现可以使用了。如:
在这里插入图片描述

二、Linux编译器-gcc/g++使用

2.1背景知识

1.预处理
2.编译(生成汇编)
3.汇编(生成机器码即机器可识别的代码)
4.链接(生成可执行文件或库文件)

2.2gcc如何完成上面的4个功能?

格式 gcc [选项] 要编译的文件 [选项] [目标文件]

预处理(进行宏替换)
实例指令:gcc –E test.c –o test.i
选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。
选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序。
预处理的功能主要包括宏定义,文件包含,条件编译,去注释等。如:
在这里插入图片描述
编译(生成汇编)
实例指令: gcc –S test.i –o test.s
用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc 把代码翻译成汇编语言。如:
在这里插入图片描述

汇编(生成机器可识别代码)
实例指令: gcc –c test.s –o test.o
汇编阶段是把编译阶段生成的“.s”文件转成目标文件
读者在此可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了。如:
在这里插入图片描述
链接(生成可执行文件或库文件)
实例指令: gcc test.o –o test
在成功编译之后,就进入了链接阶段。如:
在这里插入图片描述

2.3函数库

我们的C程序中,并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而没有定义函数的实现,那么,是在哪里实“printf”函数的呢?
答案是:系统把这些函数实现都被做到名为 libc.so.6 的库文件中去了,在没有特别指定时,gcc 会到系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到 libc.so.6 库函数中去,这样就能实现函数“printf”了,而这也就是链接的作用。
函数库一般分为动态库和静态库

  • 静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为“.a”
  • 动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”,如前面所述的
    libc.so.6 就是动态库。gcc 在编译时默认使用动态库。完成了链接之后,gcc 就可以生成可执行文件。动态库不能缺失,一旦对应的动态库缺失,影响的不止一个程序,可能导致很多程序都无法进行正常运行!
    在这里插入图片描述
    安装c/c++的静态库的指令:
sudo yum install -y glibc-static
sudo yum install -y libstdc++-static

在这里插入图片描述
file指令可以查看库是动态链接还是静态链接如:
在这里插入图片描述
总结(动vs静):
动态库因为是共享库,有效的节省资源(磁盘空间、内存空间、网络空间等)【优】动态库一旦缺失,导致各个程序都无法运行【缺】
静态库,不依赖库,程序可以独立运行【优】体积大,比较消耗资源【缺】

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

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

相关文章

金融行业数据安全相关法律法规及政策汇总

如今随着大数据和“互联网”等新兴技术的拓展,数据的作用也在不断凸显,金融业是产生和积累数据量最大、数据类型最丰富的行业之一,数据安全与个人信息保护在新时代也面临新的风险与挑战。 根据《中国银行保险报》与亚信网络安全产业技术研究院…

CCPC 2022济南站+2020威海站+2019秦皇岛站+2022绵阳站(部分)(暑假集训)

目录 Tower Frozen Scoreboard Identical Parity​编辑 Best Carry Player Stack Sort Invoker MUV LUV EXTRA Forest Program Angle Beats Catch You Catch Me Tower 思路: 提前进行/2的预处理操作,操作之后 ,在记录下要达到一样的步骤…

JavaFX 基础

1.JavaFX应用的程序基本结构 窗口(stage):窗口里面可以设置场景,但是一次只能显示一个场景。 场景(scene):场景可以添加UI组件图的树形结构。 根节点(parent):根节点设置为一个布局,放置不同的节点(组件)。可以在根节…

备战秋招 | 笔试强训2

目录 一、选择题 二、编程题 三、选择题题解 四、编程题题解 一、选择题 1、使用printf函数打印一个double类型的数据,要求:输出为10进制,输出左对齐30个字符,4位精度。以下哪个选项是正确的? A. %-30.4e B. %4.…

白皮书案例解读|数字孪生与港口的结合会碰撞出什么样的火花呢?

以下案例来自于《数字孪生世界白皮书(2023版)》 领取方式:公众号「EasyV数字孪生」后台回复「白皮书」即可领取! 嗨,我又出现啦~今天想和大家聊聊关于港口场景数字孪生技术的应用,欢迎大家踊跃…

Linux登录时,下游回显非常慢

目录 问题现象 原因分析 解决方法 源码等资料获取方法 问题现象 登录linux时,远程连接正常,[root...]回显非常慢,在执行脚本时,很容易导致命令下发错乱 原因分析 家目录下的.bash_history文件太大,导致每次登陆时读…

magento2 二次开发如何自定义theme

1.在app\design\frontend下创建自定义Theme文件夹,格式为Vendor/ThemeName,比如TestCompany/test 2.在TestCompany/test目录下创建文件夹和文件如下: etc 非必须创建 在此目录下添加view.xml,内容如下: view.xml可定…

Occupy the Cities - 思维+二分

分析: 分析每一个0的位置,记录每一个0距离两侧的1的最近距离,每一个1要么向左扩展要么向右扩展,可以将扩展过的1标记,如果需要向另一侧扩展,那么必须满足距离另一侧的0的距离加1小于等于时间,比…

网络安全行业的那些岗位

网络安全行业,正在蓬勃发展,想要找网络安全岗位的,可以参考这篇文章 一、网络安全岗位 1、需要网络安全人员的企业 有三种企业招聘网络安全人员:乙方企业、甲方企业、国有企业 乙方企业是专门从事网络安全行业的企业&#xff0c…

用Arthas快速定位线上JVM问题!

Arthas分析FullGC问题定位 对于FullGC那一定不会陌生,一般来说会采用横切FullGC前置拦截(-XX:+HeapDumpBeforeFullGC)和后置拦截(-XX:+HeapDumpAfterFullGC),导出FullGC发生前后的heap dump文件,以便于我们进行FullGC原因的分析和定位。 推测分析问题之FullGC的频率过高…

SpringBoot2+Vue2实战(十八)修改密码

一、修改密码&#xff1a; Header.vue <el-dropdown-item style"font-size: 14px; padding: 5px 0"><router-link to"/password" style"text-decoration: none">修改密码</router-link></el-dropdown-item> router/i…

tensorrt8.5.2安装,并解决CMAKE找不到tensorrt问题

ubuntu20.04、cuda11.1、cudnn8.0.5&#xff08;后续要更新到8.6.0&#xff09; tensorrt下载网址&#xff1a;NVIDIA TensorRT 8.x Download | NVIDIA Developer 选择自己合适的cuda安装 下载的时候可以使用wget wget https://developer.download.nvidia.com/compute/machin…

【springboot】RestTemplate序列化RedisSerializer到底该选哪个

RedisTemplate是Spring Data Redis提供给用户的最高级的抽象客户端&#xff0c;用户可直接通过RedisTemplate对Redis进行多种操作。 在项目中使用需要引入如下依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>…

ScrollRect滚动区域Content列表项数据钳制取值问题

问题 如下图示例&#xff0c;是一个选择日期、时间的日历控件&#xff0c;右侧小时与分钟的部分是两个Scroll Rect滚动区域组件&#xff0c;滚动到中间高亮部分表示选择&#xff0c;那么如何让滚动停止在合适的位置&#xff1f;避免出现如图所示的停在两个数据项中间的情况。 …

Slam十四讲之第一讲和第二讲,实践编程基础

目录 1.镜像寻找①方法1&#xff1a;百度网盘下载②方法2&#xff1a;在开源镜像网站上下载&#xff0c;③方法3&#xff1a;直接在Ubuntu官网下载 2 在VMware中创建虚拟机并安装Ubuntu18.043 安装VMware Tools4 初始系统中&#xff0c;部分软件的安装4.1 gcc 安装4.2 g安装4.3…

Word 插件实现读取excel自动填写

日常工作中碰到需要将EXCEL的对应数据记录填写到word文档对应的位置&#xff0c;人工操作的方式是&#xff1a; 打开exel表—>查找对应报告号的行—>逐列复制excel表列单元格内容到WORD对应的位置&#xff08;如下图标注所示&#xff09; 这种方法耗时且容易出错。实际上…

vcomp140.dll丢失怎样修复?多种方法教你修复

vcomp140.dll丢失算是一个比较常见的异常事件&#xff0c;在使用电脑的时候&#xff0c;有时候弹窗出现由于找不到vcomp140.dll&#xff0c;无法继续执行代码等&#xff0c;这种都是属于vcomp140.dll文件丢失&#xff0c;今天我们主要针对这个情况来给大家说说vcomp140.dll丢失…

自动化测试工具大盘点

本系列文章我们将带大家一起了解一下互联网大厂中通科技的自动化测试平台的搭建历程&#xff0c;从以下四个方面展开介绍&#xff1a;为什么要做这样一个统一的自动化测试平台&#xff1f;是如何做到统一的&#xff1f;平台上线后的收益&#xff0c;最后一部分会给大家分享一下…

CSDN 周赛 62 期

CSDN 周赛 62 期 参赛体验选择题1234编程题1、题目名称:覆盖面积2、题目名称:机器猫参赛体验 这次没有出填空题,好评。 选择题四个,基本上,对数据库比较熟悉的人,应该都可以全部答对的。 编程题两个,嗯。。。。就是上周偷偷摸摸更新出来的四个题目之二。还以为不会出…

levelx norFlash

levelx 文章目录 OverviewQuoteBriefDefinitionTheory 实现原理1.初始化流程2.写操作3.读操作4.回收函数 Overview 实现了flash的均衡摩擦&#xff0c;有针对nor 和 nand的接口 配合azure RTOS 以及xfile比较合适&#xff0c;单独使用不是很友好 Quote https://learn.micro…