Linux情况开辟工具

打印 上一主题 下一主题

主题 908|帖子 908|积分 2724

Linux软件包管理器yum

Linux下安装软件方式:

  • 源代码安装
  • rpm安装——Linux安装包
  • yum安装——办理安装源、安装版本、安装依靠的问题
yum对应于Windows系统下的应用市肆
利用Linux系统的人:大部门是职业步伐员
客户端怎么知道去那里下载软件?
Linux生态:

  • 开源(一种商业战略)
  • 开源不等于免费
选操作系统的标准:生态好(利用者的角度)
站在OS的筹划者和推动者,他们应该做什么?
提供云服务器和软件服务
安装rzsz

Windows和Linux下消息互传
  1. yum list |grep lrzsz
  2. yum install lrzsz.x86_64
  3. yum remove -y lrzsz.x86_64#-y:是否询问
复制代码
yum怎么知道去那里下载?
yum内置下载链接
  1. 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的简单配置

  1. touch .vimrc
  2. vim .vimrc
  3. #一个用户一个vim配置文件,不会互相影响,不建议给root做配置
复制代码
给平常用户添加白名单

  1. sudo#新建的普通用户无法sudo,必须添加到白名单
  2. #在root下操作
  3. ll /etc/sudoers
  4. #在/etc/sudoers中root    ALL=(ALL)       ALL下方添加
  5. #用户名    ALL=(ALL)       ALL
复制代码

Linux编译器-gcc/g++利用

  1. gcc mycode.c#用来编译C语言
  2. g++ mycode.cpp#用来编译CPP
复制代码
配景知识

为什么在windows或Linux上能编译运行对应的源文件?
必要在系统中提前安装C/C++开辟相关的头文件、库文件
C/C++开辟情况不但仅指的是vs、gcc、g++,更紧张的是语言本身的头文件和库文件。
安装vs,要选择对应的开辟包,同步也在下载对应的头文件和库文件
编译型语言安装开辟包一定必要下载对应的头文件和库文件
  1. ls /usr/include/#linux下头文件和库文件所在位置
复制代码
步伐运行过程


  • 预处理
  1. gcc -E mycode.c -o mycode.i#生成.i文件
复制代码


  • 去注释
  • 头文件睁开
  • 条件编译
  1. #ifndef
  2. #else
  3. #endif
复制代码


  • 宏替换
条件编译的应用场景:
提供社区版和专业版的软件公司,必要维护两份代码吗?
不必要!根据不同的编译条件,在专业版裁减掉社区版不必要的功能即可。

  • 编译(生成汇编)
  1. gcc -S mycode.c -o mycode.s#生成.s文件
复制代码

  • 汇编(生成呆板可辨认代码)
  1. gcc -c mycode.s -o mycode.o#生成mycode.o文件
  2. od mycode.o#查看二进制文件内容
  3. #mycode.o:可重定位目标二进制文件,简称目标文件,windows下的obj文件,不可以独立执行,需要经过链接后才能执行
复制代码

  • 链接(生成可执行文件或库文件)
  1. gcc mycode.o -o mytest#直接生成可执行文件mytest
  2. #将可重定位目标二进制文件和库文件进行链接才能形成可执行程序
复制代码
动态库&&静态库

Linux下:.so(动态库)、.a(静态库)
Windows下:.dll(动态库)、.lib(静态库)
库有本身的定名规则:libname.so.XXX
呆板默认值只会安装动态库
库其实就是把愿望呢间颠末一定的翻译,然后打包——只给你提供一个文件即可,不消给你提供太多的源文件,也可以到达隐藏源文件的目标。
头文件提供方法的声明+库文件提供方法的实现+你的代码=你的软件
库的价值:不让我们做重复动作
我们的.o和库是如何链接的?
动态链接

动态库(共享库)
动态库不能缺失,一旦对应的动态库缺失,影响的不止一个步伐,大概导致许多步伐都无法正常运行。
  1. ldd mytest#查看可执行程序依赖的动态库
复制代码
静态链接

在编译器利用静态库进行静态链接的时间,会将本身的方法拷贝到目标步伐中,该步伐以后不会再依靠静态库
  1. gcc mycode.c -o mytest
  2. ldd mytest
  3. #在Linux中,编译形成可执行程序,默认采用的就是动态链接,提供动态库
  4. gcc mycode.c -o mytest -static#静态链接(体积变大)
  5. #在Linux中,如果要采用静态链接的方式形成可执行程序,需要添加-static选项
复制代码
centos yum安装C/C++静态库

  1. sudo yum install -y glibc-static
  2. sudo yum install -y libstdc++-static
复制代码

  • 假如没有静态库,能否执行-static?
不能

  • 假如没有动态库,但是有静态库,而且gcc能找到?
gcc mycode.c -o mytest也可以运行,gcc默认优先动态链接
-static的本质:改变链接优先级

  • 可执行步伐不一定全是动态链接大概静态链接,大概都包括。
  • 假如加-static,所有的链接要求都必要是静态链接
动静态链接的优缺点

动态库:
长处:动态库是共享库,可以有用的节省资源(磁盘空间、内存空间、网络空间)
缺点:动态库一旦缺失,会导致各个步伐无法运行
静态库:
长处:静态库不依靠库,步伐可以独立运行
缺点:体积大,比力斲丧资源
Linux项目自动化构建工具-make/Makefile

make是一条指令
Makefile是当前目次下的一个文件
  1. mycode: mycode.c#依赖关系
  2.         gcc -o mytest mycode.c#依赖方法
  3.        
  4. clean:
  5.         rm -f mycode
复制代码

  • 依靠关系+依靠方法
make会自动推导Makefile中的依靠关系(栈式布局)

  • 为什么只能make一次?
没有须要多次make,进步我们的编译效率
怎么做到的?
比力源文件和可执行步伐的Modify(最近修改)时间
源文件形成可执行文件。
先有源文件,才有可执行。一般而言,源文件的Modify时间要比可执行的Modify时间早
假如我们更改了源文件,历史上另有可执行,那么源文件的Modify一定比可执行晚。
  1. stat mytest#查看mytest的文件时间
  2. #Access:文件被访问
  3. #Change:文件属性被修改
  4. #Modify:文件内容被修改
  5. touch mytest#mytest已存在,把mytest的所有时间更新成最新的
复制代码
make会根据源文件和可执行的新旧,判断是否必要重新执行依靠关系进行编译!
  1. mycode: mycode.c
  2.         gcc -o $@ $^
  3. #$@:目标文件
  4. #$^:源文件
  5.        
  6. .PHONY:clean#伪目标,总是被执行
  7. clean:
  8.         rm -f mycode
复制代码
利用git下令行

什么是git?

具有网络功能的版本控制器(开源)
client和server是一体的
本地堆栈+远端堆栈
git如何利用?

  1. yum install git
  2. git clone 链接
  3. git add mycode
  4. git commit -m "自己的练习代码"
  5. git push
复制代码
git的其他问题

  1. git log#提交日志
  2. git status#提交状态
  3. #.gitignore
复制代码
Linux调试器-gdb利用

debug&&release

debug可以被追踪、调试,形成可执行步伐的时间会有调试信息
gcc默认编译是release方式发布的,不能直接调试
假如要以debug方式发布,必须携带-g选项
  1. gcc -o mytest mycode.c -g
复制代码
要被gdb调试,必须以debug方式发布
gdb下令

  1. gdb mycode.c#开始调试mycode.c
  2. q#退出调试,退出后上次调试信息会自动被清理掉
  3. l 行号#显示源代码,每次列10行(行号所在位置在中间)
  4. l 函数名#列出某个函数的源代码。
  5. r#运行程序
  6. b 行号#在行号打断点
  7. info b#查看断点信息
  8. d 断点编号#删除对应的断点信息
  9. b 文件:行号#在对应文件行号打断点
  10. n#逐过程
  11. s#逐语句
  12. p 变量#查看变量的信息
  13. display 变量#常显示变量的信息
  14. undisplay 编号#取消编号对应的常显示
  15. until 行号#调试转到对应的行、快速跳过函数代码快
  16. finish#结束当前函数的调试
  17. c#跳到下一个断点
  18. disable 断点编号#禁用断点
  19. undisable 断点编号#启用断点
  20. set 变量#设置变量的值
  21. bt#查看各级函数调用及参数
  22. info locals#查看当前栈帧局部变量的值
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莫张周刘王

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表