首页 > 代码库 > Sublime配置C和C++编译运行环境
Sublime配置C和C++编译运行环境
最近在学习《深入理解计算机系统》,里面的代码是在Linux环境下的C语言编写,由于采用gcc编译环境,为方便本人学习,特在Windows环境下载了MinGM,并且配合Sublime编辑器,发挥很大功能,能够实现简单C程序的编译,运行和反编译查看汇编代码。
1.安装MinGW
在安装Dev C++的过程中自动安装了MinGW,也可以单独下载安装MinGW。
2.配置环境变量
在MinGW bin文件中有很多命令,为了使这些可执行命令在控制台直接使用,需要配置环境变量,根据MinGW的文件路径
(本人:C:\Program Files (x86)\Dev-Cpp\MinGW64),配置环境变量。
wmic ENVIRONMENT where "name=‘path‘ and username=‘<system>‘" set VariableValue="http://www.mamicode.com/%path%;C:/Program Files (x86)/Dev-Cpp/MinGW64W/bin" wmic ENVIRONMENT create name="LIBRARY_PATH",username="<system>",VariableValue="http://www.mamicode.com/C:/Program Files (x86)/Dev-Cpp/MinGW64/lib" wmic ENVIRONMENT create name="C_INCLUDEDE_PATH",username="<system>",VariableValue="http://www.mamicode.com/C:/Program Files (x86)/Dev-Cpp/MinGW64/include"
将上面代码复制,粘贴到新建文本文档中,保存为 "**.bat" ,右键以管理员身份运行,配置环境变量完成。
3. 构建C语言编译系统
选择tool –> Build System –> New Build System
然后输入以下代码:
{ "working_dir": "$file_path", "cmd": "gcc -Wall \"$file_name\" -o \"$file_base_name\"", "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", "selector": "source.c", "variants":[{"name": "Run","shell_cmd": "gcc -Wall \"$file\" -o \"$file_base_name\" && start cmd /c \"${file_path}/${file_base_name} & pause\""}] }
按Ctrl+s保存,会自动打开user目录(Sublime Text 3\Packages\User),我们修改 文件名为 c.sublime-build,保存在此目录。
这样以后打开.c文件就默认是c类型,按Ctrl+Shift+B就可以编译运行C程序。
4. 构建C++语言编译系统
步骤同上,只是将插入代码中的gcc该为g++, source.c改为source.c++ ,保存文件名c.sublime-build改为c++.sublime-build就可以了;
{ "encoding": "utf-8", "working_dir": "$file_path", "shell_cmd": "g++ -Wall -std=c++11 \"$file_name\" -o \"$file_base_name\"", "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", "selector": "source.c++", "variants":[{"name": "Run","shell_cmd": "g++ -Wall -std=c++11 \"$file\" -o \"$file_base_name\" && start cmd /c \"${file_path}/${file_base_name} & pause\""}]
}
5. 编译和反编译命令
对于一个C程序,使用命令gcc -S main.c 可以产生对应的汇编代码main.S,可以直接用文本编辑器打开查看。
对于生成的object文件,可以采用objdump命令进行反汇编。
objdump -t obj 输出目标文件的符号表()
objdump -h obj 输出目标文件的所有段概括()
objdump -j .text/.data -S obj 输出指定段的信息
objdump -S obj C语言与汇编语言同时显示
objdump -d obj 反汇编那些应该还有指令机器码的section
Sublime配置C和C++编译运行环境