论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
数据库
›
SqlServer
›
Linux情况开辟工具
Linux情况开辟工具
莫张周刘王
金牌会员
|
2025-2-20 14:38:48
|
显示全部楼层
|
阅读模式
楼主
主题
908
|
帖子
908
|
积分
2724
Linux软件包管理器yum
Linux下安装软件方式:
源代码安装
rpm安装——Linux安装包
yum安装——办理安装源、安装版本、安装依靠的问题
yum对应于Windows系统下的应用市肆
利用Linux系统的人:大部门是职业步伐员
客户端怎么知道去那里下载软件?
Linux生态:
开源(一种商业战略)
开源不等于免费
选操作系统的标准:生态好(利用者的角度)
站在OS的筹划者和推动者,他们应该做什么?
提供云服务器和软件服务
安装rzsz
Windows和Linux下消息互传
yum list |grep lrzsz
yum install lrzsz.x86_64
yum remove -y lrzsz.x86_64#-y:是否询问
复制代码
yum怎么知道去那里下载?
yum内置下载链接
yum install -y epel-release#扩展yum源
复制代码
Linux编辑器-vim利用
vim:文本编写——写代码(多模式编辑器)
下令模式(默认模式):用户所有的输入都会被看成下令,一般不会作为文本输入
下令模式下光标定位
gg:定位光标到最开始行
G:定位光标到最结尾行
n+G:定位光标到第n行
(n)yy:复制光标所在行(后n行)
(n)p:粘贴(n重复行)到光标所在下一行
(n)dd:剪切、删除(n行)
u:撤销下令
ctrl+r:撤销之前的撤销
$:定位光标到当前行结尾
^:定位光标到当前行开始
w、b:光标按照单词进行行内、跨行移动
h、j、k、l:光标按左、下、上、右移动
~:对光标所在字符进行大小写转换
(n)r:对光标及其之后共n个字符替换为新的字符(需输入)
R:替换模式,对光标所在内容进行重新输入
(n)x:对光标及其之后的字符进行删除,共删除n位
底行模式下下令
多文件如那边理?
vs+文件名:打开另一个文件编辑窗口
ctrl+ww:窗口光标切换
光标在哪一个窗口内里,就对哪一个窗口进行操作。
w!:强制保存
q!:强制退出
set nu:调出行号
set nonu:去掉行号
vim的简单配置
touch .vimrc
vim .vimrc
#一个用户一个vim配置文件,不会互相影响,不建议给root做配置
复制代码
给平常用户添加白名单
sudo#新建的普通用户无法sudo,必须添加到白名单
#在root下操作
ll /etc/sudoers
#在/etc/sudoers中root ALL=(ALL) ALL下方添加
#用户名 ALL=(ALL) ALL
复制代码
Linux编译器-gcc/g++利用
gcc mycode.c#用来编译C语言
g++ mycode.cpp#用来编译CPP
复制代码
配景知识
为什么在windows或Linux上能编译运行对应的源文件?
必要在系统中提前安装C/C++开辟相关的头文件、库文件
C/C++开辟情况不但仅指的是vs、gcc、g++,更紧张的是语言本身的头文件和库文件。
安装vs,要选择对应的开辟包,同步也在下载对应的头文件和库文件
编译型语言安装开辟包一定必要下载对应的头文件和库文件
ls /usr/include/#linux下头文件和库文件所在位置
复制代码
步伐运行过程
预处理
gcc -E mycode.c -o mycode.i#生成.i文件
复制代码
去注释
头文件睁开
条件编译
#ifndef
#else
#endif
复制代码
宏替换
条件编译的应用场景:
提供社区版和专业版的软件公司,必要维护两份代码吗?
不必要!根据不同的编译条件,在专业版裁减掉社区版不必要的功能即可。
编译(生成汇编)
gcc -S mycode.c -o mycode.s#生成.s文件
复制代码
汇编(生成呆板可辨认代码)
gcc -c mycode.s -o mycode.o#生成mycode.o文件
od mycode.o#查看二进制文件内容
#mycode.o:可重定位目标二进制文件,简称目标文件,windows下的obj文件,不可以独立执行,需要经过链接后才能执行
复制代码
链接(生成可执行文件或库文件)
gcc mycode.o -o mytest#直接生成可执行文件mytest
#将可重定位目标二进制文件和库文件进行链接才能形成可执行程序
复制代码
动态库&&静态库
Linux下:.so(动态库)、.a(静态库)
Windows下:.dll(动态库)、.lib(静态库)
库有本身的定名规则:libname.so.XXX
呆板默认值只会安装动态库
库其实就是把愿望呢间颠末一定的翻译,然后打包——只给你提供一个文件即可,不消给你提供太多的源文件,也可以到达隐藏源文件的目标。
头文件提供方法的声明+库文件提供方法的实现+你的代码=你的软件
库的价值:不让我们做重复动作
我们的.o和库是如何链接的?
动态链接
动态库(共享库)
动态库不能缺失,一旦对应的动态库缺失,影响的不止一个步伐,大概导致许多步伐都无法正常运行。
ldd mytest#查看可执行程序依赖的动态库
复制代码
静态链接
在编译器利用静态库进行静态链接的时间,会将本身的方法拷贝到目标步伐中,该步伐以后不会再依靠静态库
gcc mycode.c -o mytest
ldd mytest
#在Linux中,编译形成可执行程序,默认采用的就是动态链接,提供动态库
gcc mycode.c -o mytest -static#静态链接(体积变大)
#在Linux中,如果要采用静态链接的方式形成可执行程序,需要添加-static选项
复制代码
centos yum安装C/C++静态库
sudo yum install -y glibc-static
sudo yum install -y libstdc++-static
复制代码
假如没有静态库,能否执行-static?
不能
假如没有动态库,但是有静态库,而且gcc能找到?
gcc mycode.c -o mytest也可以运行,gcc默认优先动态链接
-static的本质:改变链接优先级
可执行步伐不一定全是动态链接大概静态链接,大概都包括。
假如加-static,所有的链接要求都必要是静态链接
动静态链接的优缺点
动态库:
长处:动态库是共享库,可以有用的节省资源(磁盘空间、内存空间、网络空间)
缺点:动态库一旦缺失,会导致各个步伐无法运行
静态库:
长处:静态库不依靠库,步伐可以独立运行
缺点:体积大,比力斲丧资源
Linux项目自动化构建工具-make/Makefile
make是一条指令
Makefile是当前目次下的一个文件
mycode: mycode.c#依赖关系
gcc -o mytest mycode.c#依赖方法
clean:
rm -f mycode
复制代码
依靠关系+依靠方法
make会自动推导Makefile中的依靠关系(栈式布局)
为什么只能make一次?
没有须要多次make,进步我们的编译效率
怎么做到的?
比力源文件和可执行步伐的Modify(最近修改)时间
源文件形成可执行文件。
先有源文件,才有可执行。一般而言,源文件的Modify时间要比可执行的Modify时间早
假如我们更改了源文件,历史上另有可执行,那么源文件的Modify一定比可执行晚。
stat mytest#查看mytest的文件时间
#Access:文件被访问
#Change:文件属性被修改
#Modify:文件内容被修改
touch mytest#mytest已存在,把mytest的所有时间更新成最新的
复制代码
make会根据源文件和可执行的新旧,判断是否必要重新执行依靠关系进行编译!
mycode: mycode.c
gcc -o $@ $^
#$@:目标文件
#$^:源文件
.PHONY:clean#伪目标,总是被执行
clean:
rm -f mycode
复制代码
利用git下令行
什么是git?
具有网络功能的版本控制器(开源)
client和server是一体的
本地堆栈+远端堆栈
git如何利用?
yum install git
git clone 链接
git add mycode
git commit -m "自己的练习代码"
git push
复制代码
git的其他问题
git log#提交日志
git status#提交状态
#.gitignore
复制代码
Linux调试器-gdb利用
debug&&release
debug可以被追踪、调试,形成可执行步伐的时间会有调试信息
gcc默认编译是release方式发布的,不能直接调试
假如要以debug方式发布,必须携带-g选项
gcc -o mytest mycode.c -g
复制代码
要被gdb调试,必须以debug方式发布
gdb下令
gdb mycode.c#开始调试mycode.c
q#退出调试,退出后上次调试信息会自动被清理掉
l 行号#显示源代码,每次列10行(行号所在位置在中间)
l 函数名#列出某个函数的源代码。
r#运行程序
b 行号#在行号打断点
info b#查看断点信息
d 断点编号#删除对应的断点信息
b 文件:行号#在对应文件行号打断点
n#逐过程
s#逐语句
p 变量#查看变量的信息
display 变量#常显示变量的信息
undisplay 编号#取消编号对应的常显示
until 行号#调试转到对应的行、快速跳过函数代码快
finish#结束当前函数的调试
c#跳到下一个断点
disable 断点编号#禁用断点
undisable 断点编号#启用断点
set 变量#设置变量的值
bt#查看各级函数调用及参数
info locals#查看当前栈帧局部变量的值
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
莫张周刘王
金牌会员
这个人很懒什么都没写!
楼主热帖
06、etcd 写请求执行流程
软件测试项目实战经验附视频以及源码【 ...
四、WinUI3下TitleBar的自定义
网上书店管理系统项目【Java数据库编程 ...
【云原生】三、详细易懂的Docker 容器 ...
物联网5种无线传输协议特点大汇总 ...
c# sqlsugar,hisql,freesql orm框架全 ...
MySQL用户和权限管理
如何用同一套账号接入整个研发过程? ...
面向大规模神经网络的模型压缩和加速方 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表