从test.c到test.exe依赖翻译环境(如vs2019集成开发环境),运行代码在运行环境,产生运行结果。
工程中有很多.c文件,.c文件各自单独通过编译器处理,生成目标文件.obj,然后,链接器链接所有的目标文件和链接库生成可执行文件.exe。
翻译环境(1.编译(编译器)cl.exe 2.链接(链接器)link.exe)
每个源文件的编译:1.预编译(预处理)2.编译 3.汇编
gcc test.c -E预处理之后就停止 ,gcc test.c -E > test.i(重定向)
在预处理阶段,完成文本操作:1.完成了头文件的包含(#include)2.#define定义的符号和宏的替换 3.注释删除
编译,gcc test.i -S生成test.s的文件,把C语言代码转化成汇编代码:1.语法分析2.词法分析3.语义分析4.符号汇总
汇编,gcc test.s -c生成test.o(Linux)(test.obj(windows)),把汇编代码转换成机器指令(二进制指令):1.生成符号表 test.o这个文件是elf格式,肉眼看不懂,用readelf
ubuntu:
sudo(以管理员权限执行后面的命令) apt(ubuntu中用于管理软件的工具)
ubuntu中安装包的格式是.deb
whe按tab键自动补全wherels
ctrl+alt+t打开ubuntu终端
通过rqt(ubuntu的调试工具)可以得知为何通过键盘控制窗口就可以完成对另一程序进行控制
cd(进入) /代表根目录 pwd返回当前的目录 ls查看这个目录下有什么东西
mkdir创建文件夹 touch创建文件(如.txt .c 等)
nano(ubuntu系统自带的终端文本编辑工具)cat(查看文件内容)rm(删除文件)
若知道指令但是忘记该指令如何使用,可以--help(如rm --help)