ToB企服应用市场:ToB评测及商务社交产业平台

标题: ★ Linux ★ 基础开发工具的利用(上) [打印本页]

作者: 怀念夏天    时间: 2024-10-26 07:59
标题: ★ Linux ★ 基础开发工具的利用(上)
Ciallo~(∠・ω< )⌒☆ ~ 今天,我将和大家一起学习 linux 基础开发工具的利用~

目录
壹  Linux编辑器 - vim利用
1.1 vim的基本概念
1.2 vim正常模式命令集
1.2.1 插入模式
1.2.2 移动光标命令
1.2.3 编辑命令
1.3 vim末行模式命令集
贰  Linux编译器 - gcc/g++利用
2.1 gcc怎样完成
2.2 几个小问题
2.2.1 条件编译
2.2.2 为什么要编译成汇编文件
2.2.3 动静态库是什么
2.2.4 解决sodu报错
叁  Linux项目主动化构建工具-make/Makefile
3.1 初识makefile
3.2 .PHONY
3.3 完整的依靠关系
3.4 makefile中的写法
3.4.1 第一个版本
3.4.2 第二个版本
3.4.3 最终版本
~ 完 ~


壹  Linux编辑器 - vim利用

1.1 vim的基本概念

vim主要有三种模式,分别是命令模式插入模式底行模式

模式的切换:


1.2 vim正常模式命令集

★  命令前加数字能更快的进行批量操作 ~
1.2.1 插入模式


1.2.2 移动光标命令


1.2.3 编辑命令

复制与黏贴与剪切

撤销

一旦退出文件编辑,无法再进行撤销了~ 没有退出都可以撤销 ~
更换

查找

批量注释







1.3 vim末行模式命令集




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

2.1 gcc怎样完成

  1. gcc [选项] 要编译的文件 [选项] [目标文件]
复制代码
1. 预处置惩罚(进行宏更换)

2. 编译(天生汇编)

3. 汇编(天生呆板可识别代码)

4. 链接(天生可实行文件或库文件)

2.2 几个小问题

2.2.1 条件编译


命令行级别的宏界说:
  1. gcc test.c -o test -DM
  2. gcc test.c -o test -DM=100
复制代码
预处置惩罚的本质就是修改编辑我们的文本代码~
-DM就是再文本文件中参加#define M 100如许的字符串~
条件编译的作用:


2.2.2 为什么要编译成汇编文件

步伐的发展是从二进制->汇编语言->c语言->C++/JAVA等。每个阶段都颠末了几十年的发展,c语言出现时汇编语言已经很成熟了,把c语言翻译成汇编语言再转换成二进制要比直接翻译成二进制轻易得多~
每个语言的发明都要有对应的编译器使他可以翻译成汇编语言,那汇编语言怎么编译成二进制呢?起首在汇编语言出现后,先要发明一个二进制版的编译器,然后用汇编语言写一个汇编编译器,用二进制版的汇编编译器编译一下汇编写的汇编编译器,最后二进制版的就可以不要了,直接用汇编版的进行编译,这就是编译器的自举过程~

2.2.3 动静态库是什么


库是一套方法大概数据集,为开发提供最基本的保证(基本接口,功能,加速我们的二次开发)~
Linux下的C语言库为 libc.so 和 libc.a ,库的名字为去掉前缀lib和后缀.so/.a后剩余的。
动态库:把动态库内部实现的方法和我们自己的步伐链接起来,让我们自己的步伐能在库中找到方法,形成可实行步伐,动态库在实行库中的方法时必要跳转到库中实行,完了再返回。
根据地址的更换来定位~
动态链接的图示:


静态链接就是把库里的实现拷贝一份到我们自己的代码中,用时调用自己这份实现。静态库只有在链接时有用,一旦形成可实行步伐,就不必要静态库了~
动静态库对比:

ldd命令 - 显示所用库~  c步伐默认动态链接

file命令 - 具体检察范例


假如想要静态链接:


静态链接的可实行文件会大很多~
C++的情况:

动态库(共享库)的本质就是把语言层面的公共代码在内存中只出现一份~

2.2.4 解决sodu报错


普通用户在sudo时可能会出现以上报错~
解决步调:

然后就完成辣~


叁  Linux项目主动化构建工具-make/Makefile

3.1 初识makefile

make是一条命令,makefile是一个文件,两个搭配利用,完成项目主动化构建。
makefile带来的好处就是——“主动化编译”,一旦写好,只必要一个make命令,整个工程完全主动编译,极大的提高了软件开发的效率。


第一行为依靠关系 ~
第二行为tab + 依靠方法 ~

上图为利用makefile的方法 ~

make命令扫描makefile文件的时候,从上向下扫描,默认形成第一个目的文件  ~

3.2 .PHONY



.PHONY修饰的每次编译都实行~(本质上是说忽略判断新旧问题
而一般来说gcc编译的不发起加.PHONY修饰,假如源文件不改动,编译就不会实行~

Modify时间是作为知道bin和.c新旧的尺度 ~

3.3 完整的依靠关系




3.4 makefile中的写法

测试方法:

@符号让make不回显~
3.4.1 第一个版本

基于变量版的Makefile ~(雷同于宏)

BIN和SRC也可以优化掉~


3.4.2 第二个版本



假如有多个文件呢~


3.4.3 最终版本






~ 完 ~




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4