本帖最后由 Qter 于 2021-6-29 22:25 编辑
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat" MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015 version 14.0)
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvars32.bat" Visual Studio 2019 : vc16
cl.exe是Microsoft C/C++编译器
编译器:cl(cl.exe) 链接器:link(link.exe) 使用cl和link编译链接的示例 https://blog.csdn.net/huashuolin001/article/details/82384545 1. 编写源代码。创建编写文件,test.c #include<stdio.h> int main(void) { printf("compile&&link test\n"); getchar(); return (0); } 2. 编译。打开cmd窗口,进入test.c目录,执行cl /c test.c进行编译,生成test.obj文件 FAQ: 1) 'cl' 不是内部或外部命令,也不是可运行的程序或批处理文件。 解决方法:将cl.exe所在路径((cl.exe位于\VC\bin))加入系统环境变量;重启cmd窗口 2) 编译器cl找不到mspdb80.dll(mspdb1000.dll或者mspdb140.dll等,视vs版本而定),无法启动 解决方法:找到该.dll,加入到cl.exe所在的文件夹(该动态链接库所在文件夹Common7\IDE) 3) 链接错误,stdio.h:不包括路径集 解决方法:执行Common7\Tools\vsvars32.bat(vsvars32.bat 文件用于设置适当的环境变量以启用命令行生成) 注意: 执行cl test.c,会直接生成test.obj文件和test.exe文件,因为执行cl test.c在编译后会自动执行链接。因此此处为方便理解,分开执行编译和链接的过程。cl命令后的/c参数代表,只编译不链接。 3. 链接。 link test.obj 生成test.exe文件
gcc -g -o -c
调试信息 输出文件名 汇编
-c 源码编译为目标代码跳过汇编和连接的步骤
一一预编译一一
拷贝include文件
替换define
宏替换
一一编译一一
把c代码转为汇编代码\语法检查
一一汇编一一
as 汇编代码转目标代码(.o)
gcc -c main.c
一一连接一一
ld 把目标文件转可执行文件
编译器:把高级语言编译为指定机器语言的工具,以高级语言编写的程序源代码为输入,产生一个包含机器代码及相关信息(包括符号表和重定位信息等)的目标文件.
-g -Zi 生成调试信息
make nmake
g++(gcc) cl
|