
个人主页:在线OJ的阿川
大佬的支持和鼓励,将是我成长路上最大的动力
阿川水平有限,如有错误,欢迎大佬指正
上篇博文
目录
- 超级权限
- 编译器
- 引入背景
-
- 概括
- 发行版本
- 自动化构建工具
- 拓展学习
超级权限
在Linux当中有些权限 需要root账户,但普通用户可以短暂的使用root账户所拥有的权限,需要使用sudo指令
- 使用sudo指令,需要将该用户添加至信任白名单中
- 信任白名单
编译器
编译器——gcc/g++使用
gcc主要编译点c文件
g++ 可以编译点c文件,也可以编译点cpp文件,但 建议cpp
- 经过编译器处理之后,会生成可执行程序
引入背景
1.预处理
- 去注释
- 头文件展开
- 宏替换
注意:预处理阶段能进行头文件展开
则说明 头文件中的代码已经拷贝在了操作系统中
其实无论Visual Studio Installer、Linux、Windows等等这些平台
之所以能够运行编译型语言,是因为在安装该编译型语言时,就已经安装了相应的开发包,开发包中有所对应的头文件和库文件。
头文件(.h)提供方法的声明,库文件 提供方法的实现,加自己写的代码就等于自己的软件.
库其实就是把源文件(.c)经过一定的翻译,然后打包,只给你提供一个文件即可,不用给你提供太多的源文件,可以达到隐藏源文件的目的.
库分为两种类型
动态库
- 在执行代码的过程中,若遇见无法执行的,则跳转到库中执行,执行完之后,回到 自己的代码中向下继续执行,所有访问者都能调用该库,故动态库又称 共享库。
静态库:
- 执行代码前,先将 库中的文件拷贝到本地可执行程序中,不存在说执行代码中遇见无法执行的去跳转到库中去寻找。该库称为静态库。
- 静态库需要先安装:
- 执行代码前,先将 库中的文件拷贝到本地可执行程序中,不存在说执行代码中遇见无法执行的去跳转到库中去寻找。该库称为静态库。
动态库和静态库区别:
- 动态库因为是共享库,有效的节省资源,但动态库一旦缺失,导致各个程序都无法运行
静态库 不依赖库,程序可以独立运行,但体积大比较消耗资源
- 动态库因为是共享库,有效的节省资源,但动态库一旦缺失,导致各个程序都无法运行
条件编译
- 根据不同的编译条件,裁剪代码
- 拓展
2.编译
- 生成可重定位目标二进制文件,简称目标文件
3.汇编
- 生成机器可识别代码
- 生成可执行二进制程序
可执行程序形成的时候,不是无序的二进制构成,而有自己的格式–ELF格式
4.链接
- 将可重定位目标二进制文件和标准库链接形成可执行程序
- 点o文件和库如何连接
- 动态链接
与动态库进行连接(默认) - 静态链接
将静态库的文件拷贝到本地,进行连接
- 实际中 静态和动态链接是混合的。
- 动态链接
- 点o文件和库如何连接
- 查看链接方式
概括
发行版本
可执行程序发行版本
- debug
- 可以被追踪调试
- 其中添加了的debug信息
- 可以被追踪调试
- release(默认)
- 不可被追踪调试
自动化构建工具
自动化构建和清理
- make 自动化的指令
- makefile or Makefile 当前目录下的文件
- 需要先创建一个makefile文件,在makefile文件中添加一些指令,从而用 make指令进行自动化构建和清理
- 之后就可以在控制台中输入make自动化指令了
- 需要先创建一个makefile文件,在makefile文件中添加一些指令,从而用 make指令进行自动化构建和清理
修改Tab键的默认设置
代码
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
拓展学习
若对自己要求高点,想要进行拓展学习,这里推荐两本书
程序员的自我修养
- 关于编译的深入讲解
深入理解计算机系统
- 不太建议新手小白去看
好的,到此为止啦,祝您变得更强
道阻且长 行则将至 |
---|
个人主页:在线OJ的阿川大佬的支持和鼓励,将是我成长路上最大的动力