Linux

Linux学习:pass

Linux学习:pass

bingliaolong 1周前 3 0

pass 概述 一个 Pass 就是对 IR 做一次完整的遍历和处理 每个 Pass 专注于做一件事——分析代码的某个属性,或者对代码做某一种变换 每个 Pass 读取当前的 LLVM IR,做一种特定的处理,输出修改后的 IR 下一个 Pass 在上一个 Pass 的输出基础上...

Linux学习:编译相关

Linux学习:编译相关

bingliaolong 1周前 7 0

概述 编译阶段 编译阶段是整个编译流水线中最复杂、最核心的阶段——它是编译器的"大脑" 定义 编译阶段把预处理后的 C/C++ 源码(纯文本)翻译成汇编语言(或 LLVM IR) 这个阶段要完成"理解高级语言的含义,并用低级语言表达出来"这...

Linux学习:预处理相关

Linux学习:预处理相关

bingliaolong 2周前 7 0

概述 预处理阶段的本质 对源码做文本级别的变换,把编译器不认识的预处理指令(#开头的东西)全部处理掉,输出一个纯粹的、编译器可以直接解析的 C/C++ 代码文件 宏替换是其中最核心的操作,但 #include 展开和条件编译同样重要——实际项目中,#include 展开带来的代码...

Linux学习:二进制、elf

Linux学习:二进制、elf

bingliaolong 2周前 8 0

二进制文件类型 概述 Windows 有好几种不同的二进制格式 PE/COFF 用于 .exe/.dll/.obj/.sys 独立的 .pdb 格式 独立的 .lib 格式 Linux 几乎全部统一为 ELF 格式 可执行文件、共享库、目标文件、内核模块、core dump 全都...

Linux学习:gdb、debugging

Linux学习:gdb、debugging

bingliaolong 2周前 5 0

概述 Windows调试流程 Linux/GDB 的对应流程: 区别 Windows 把调试信息放在独立的 .pdb 文件里,需要你手动指定路径 Linux 把调试信息(DWARF)直接嵌入 .o / 可执行文件 / .so 中(编译时加 -g 选项),所以大部分情况下你不需要额...

Linux学习:grep、tmux、kill、signal

Linux学习:grep、tmux、kill、signal

bingliaolong 2周前 13 0

grep 基础的用法 常用的选项 组合使用 上下文显示 正则表达式 管道组合(grep 的精髓) tmux 三层结构 前缀键 所有快捷键都要先按一个"前缀键",默认是 Ctrl+b 比如"分屏"的操作是 Ctrl+b 然后松开,再按 % 会...

Linux_进程地址空间相关

Linux_进程地址空间相关 14

bingliaolong 2周前 8 0

进程地址空间 概述 示例代码 图示 内核空间 内核空间是什么 内核空间是进程虚拟地址空间的高地址部分,在 64 位 Linux 上位于 0xFFFF800000000000 以上,占 128TB 它和用户空间的根本区别不是"地址高低",而是页表属性: 内核空间...

各平台调试方法总结记述一

各平台调试方法总结记述一

bingliaolong 2年前 13 0

Windows 日志 可以通过现有日志来观察 当不方便附加进程时,可以通过写文件的方法写日志 Visual Studio 附加到进程 CLion 附加到进程 windbg Linux 日志 应用程序日志 var/log/ 当不方便附加进程时,可以通过写文件的方法写日志 gdb l...

包管理器:各平台安装卸载相关记述

包管理器:各平台安装卸载相关记述

bingliaolong 2年前 26 0

Windows 安装 为了确定安装目标,在安装前后调用了get_reg_items get_reg_items 上买的Windows实现是通过枚举注册表 把几个目标路径的注册表存到一起 然后根据安装前后这些路径下的注册表的项数,来找出新增的那个 通过比较,确定新增项,然后记录下新...

51CTO:Linux C++网络编程五

51CTO:Linux C++网络编程五

bingliaolong 2年前 20 0

平台相关 select 支持:windows 支持:linux,macos,bsd,aix等 poll 支持:linux,macos,bsd等 不支持:一些交旧的或特定的unix操作系统可能不支持poll 不支持:windows不提供标准的poll,但可以通过其他相似的api来达...

扫一扫二维码分享