Linux学习:预处理相关
概述 预处理阶段的本质 对源码做文本级别的变换,把编译器不认识的预处理指令(#开头的东西)全部处理掉,输出一个纯粹的、编译器可以直接解析的 C/C++ 代码文件 宏替换是其中最核心的操作,但 #include 展开和条件编译同样重要——实际项目中,#include 展开带来的代码...
概述 预处理阶段的本质 对源码做文本级别的变换,把编译器不认识的预处理指令(#开头的东西)全部处理掉,输出一个纯粹的、编译器可以直接解析的 C/C++ 代码文件 宏替换是其中最核心的操作,但 #include 展开和条件编译同样重要——实际项目中,#include 展开带来的代码...
概述 编译阶段 编译阶段是整个编译流水线中最复杂、最核心的阶段——它是编译器的"大脑" 定义 编译阶段把预处理后的 C/C++ 源码(纯文本)翻译成汇编语言(或 LLVM IR) 这个阶段要完成"理解高级语言的含义,并用低级语言表达出来"这...
划分 依据文件系统使用的频繁与否与是否允许使用者随意更动, 而将目录定义成为四种交互作用的形态 可分享的 可以分享给其他系统挂载使用的目录 不可分享的 机器上面运作的配置文件或程序相关的socket文件等 可变的 有些不会经常变动的数据 不可变的 经常改变的数据 可分享的 不可分...
dip 功能说明:IP拨号连接。 语 法:dip [-aikltv][-m][-p<协议>][拨号script文件] 补充说明:dip可控制调制解调器,以拨号IP的方式建立对外的双向连接。 参 数: -a 询问用户名称与密码。 -i 启动拨号服务器功能。 -k 删...
信号 概述 /usr/include/ 信号是进程间通信(IPC)的一种简单机制 信号提供了一种向进程传递通知和信息的方式,以便进程可以相应地做出反应 信号类型 SIGINT:当用户按下CTRL-C时,通常发送这个信号来中断进程 SIGTERM:用于正常终止进程,是kill命令的...
pass 概述 一个 Pass 就是对 IR 做一次完整的遍历和处理 每个 Pass 专注于做一件事——分析代码的某个属性,或者对代码做某一种变换 每个 Pass 读取当前的 LLVM IR,做一种特定的处理,输出修改后的 IR 下一个 Pass 在上一个 Pass 的输出基础上...
概述 信号是由用户 、系统或者进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常。 Linux信号产生条件: 对于前台进程,用户可以通过输入特殊的终端字符来给它发送信号。 比如Ctrl+C通常会给进程发送一个中断信号。 系统异常。 比如浮点数异常和非法内存段访问。 ...
基本语法 Shebang 注释 变量 变量名不能包含空格,等号两边也不能有空格 引用变量使用$符号 使用readonly命令将变量设置为只读 使用unset删除变量 字符串 单引号内的内容原样输出,变量不会被解析 双引号内的内容会解析变量和转义字符 获取字符串长度 字符串拼接 数...
内核空间和用户空间 对 32 位操作系统而言,它的寻址空间(虚拟地址空间,或叫线性地址空间)为 4G(2的32次方)。也就是说一个进程的最大地址空间为 4G。操作系统的核心是内核(kernel),它独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为...
概述 Windows调试流程 Linux/GDB 的对应流程: 区别 Windows 把调试信息放在独立的 .pdb 文件里,需要你手动指定路径 Linux 把调试信息(DWARF)直接嵌入 .o / 可执行文件 / .so 中(编译时加 -g 选项),所以大部分情况下你不需要额...
搜索当前标签