vs系列集成开发环境使用的编译器cl和链接器link

源代码到最终的程序生成,之间经历了编译、链接的过程。但是vs系列集成开发环境,为了方便程序员工作,将编译链接过程都隐藏起来,只需选择工程,右击,点击“生成”,即可生成exe、dll、lib等文件。然要做到知其然,知其所以然,要知道vs系列集成开发环境使用了那种编译器、哪种链接器,经过了怎样的编译链接过程,从而生成最终的文件。

编译器:cl(cl.exe)

链接器:link(link.exe)

使用cl和link编译链接的示例,如下

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文件

猜你喜欢

转载自blog.csdn.net/huashuolin001/article/details/82384545