对于大多数在windows上写windows C/C++应用程序的人可能用的都是微软提供的VC++6.0或Visual Studio集成开发环境,但是对想为了更好地理解程序编译链接过程和习惯如linux般在命令行下工作的人来说,我们也可以配置使用命令行编译程序。

事实上,基本的程序编译链接工具为一个编译器和链接器——编译器负责把C/C++代码编译成目标二进制代码(对微软编译器一般生成.obj文件),链接器负责把目标二进制代码和各种C/C++提供的标准库(如C语言标准库的C runtime:libc.lib)链接起来,再加上特定的启动代码就生成了一个标准的windows exe或dll程序。而微软VC++6.0或Visual Studio集成开发环境所做的工作就是在这个编译器和链接器上构建一个用于编辑代码的IDE、编译链接参数配置和调试输出的GUI界面、便于项目集成管理的工作空间(VC6,对应为.dsw文件和.dsp文件)或解决方案(Visual Studio,对应文件为.sln文件)。

那么下面我们具体看一下微软C/C++的编译器和链接器,微软采用cl.exe和link.exe来编译和链接程序,cl.exe又可兼做编译器(compile)和链接器(link)的作用。同带GUI界面的集成开发环境一样,在命令行下需要一个管理多个文件编译的工具,微软用的是nmake.exe。笔者自己的电脑XP上VC6安装在D盘,找到安装位置打开如下

打开Common下MSDev98文件夹如下

打开VC98文件夹如下

进入个文件各个文件夹查看,可知微软提供的cl.exe,link.exe,nmake.exe程序都存在VC98的Bin文件下

若此时切换到命令行(在附件中打开或Win+R运行cmd),敲入cl提示是找不到程序的,此时要做的是把VC98的Bin目录加到系统目录中,再敲入cl可能会出现提示找不到MSPDB60.DLL的错误,这是因为该cl.exe的支持工具找不到,看到前面有Common下MSDev98,自然想到支持文件在其下Bin文件夹中,果然在其中找到MSPDB60.DLL。因此我们还要做的就是把MSDev98的Bin目录加到系统目录下

找到系统环境变量编辑处添加系统目录,如下(我的电脑->查看系统信息->系统属性->高级->环境变量)

可以在系统变量或用户变量中添加,笔者习惯在用户变量中添加系统目录,在用户变量中找到PATH变量(若没有则新建),在原有变量中加上D:\XP\Microsoft Visual Studio\Common\MSDev98\Bin和D:\XP\Microsoft Visual Studio\VC98\Bin目录。此时调入新的命令行窗口读入新的环境变量,注意若以前此时直接在以前打开的命令行窗口敲入cl还是不行,必须重新开cmd或新建cmd窗口读入新的环境变量才能运行。

下面新建一个新的a.c程序如下

#include<stdio.h>
int main(int argc, char *argv[])
{printf("cl, link and nmake test");return 0;
}

编译:cl /Gx a.c

此时提示无法找到或链接stdio.h,这是因为编译器找不到要包含的头文件或链接的库文件,此时只需要按照之前的步骤在用户变量中添加include位置和lib位置

INCLUDE=D:\XP\Microsoft Visual Studio\VC98\MFC\Include;D:\XP\Microsoft Visual Studio\VC98\Include和

LIB=D:\XP\Microsoft Visual Studio\VC98\Lib;D:\XP\Microsoft Visual Studio\VC98\MFC\Lib

此时编译程序:cl /Gx a.c,可以看到生成了a.obj和a.exe,运行生成的a.exe,成功!

至此,命令行配置完成

注:

命令行编译的使用,请参考相关命令说明

1、在cmd敲入 cl -help 和link  -help及nmake -help查看相关参数和用法

2、有些电脑装的盗版VC6会缺少MSPDB60.DLL,在此下载放入*\Microsoft Visual Studio\Common\MSDev98\Bin目录即可

3、对于Visual Studio的配置和VC6配置相似,在此恕不赘述!

原创,转载请注明来自http://blog.csdn.net/wenzhou1219

VC6命令行编译配置相关推荐

  1. VC6命令行编译工程方法

    VC6命令行编译工程方法 昨天下载一个界面库wxWidgets,编译里面的库很痛苦,有好几个工程,我的在一边等待,痛苦!!于是上网找到命令行编译的方法,可以写一个批处理文件,呵呵,想起以前经理编译工程 ...

  2. 【C/C++】VS的cl命令 | 配置环境变量 | 使用命令行编译C/C++程序

    文章目录 一.前言 二.准备 三.配置环境变量 1. 逐步配置 2. 一步到位 四.语法 更多文章 一.前言 作为一个C++ (C语言) 程序员,VS可谓是编写代码的神器(天下第一IDE!).但是它的 ...

  3. java打包dex_Android 命令行编译、打包生成apk文件

    一.搭建搭建环境 1. 安装JDK 和 Android SDK 2. 配置环境变量 D:\android-sdk-windows\tools C:\Program Files\Java\jdk1.6. ...

  4. 命令行编译 WRK ,windbg 调试

    一.准备工作 本文记录如何用命令行编译WRK内核,下面列出需要准备的东西: win2k3 sp1 虚拟机环境 WRK v1.2源码 两个需要用到的dll:msvcr71.dll ,msvcp71.dl ...

  5. JAVA命令符找不到符号_[转]Java命令行编译文件时出现的错误,找不到符号或软件包不存在等...

    标签(空格分隔): Javajavascript 习惯了eclipse的自动编译,Java命令行编译.执行文件只会最基础的部分,就是对单文件的编译和执行,并且不包含任何外部JAR包.但有时候你还非得用 ...

  6. win10 uwp 使用 msbuild 命令行编译 UWP 程序

    原文:win10 uwp 使用 msbuild 命令行编译 UWP 程序 版权声明:博客已迁移到 http://lindexi.gitee.io 欢迎访问.如果当前博客图片看不到,请到 http:// ...

  7. Java script生成apk_Android 命令行编译、打包生成apk文件

    一.搭建搭建环境 1. 安装JDK 和 Android SDK 2. 配置环境变量 D:\android-sdk-windows\tools C:\Program Files\Java\jdk1.6. ...

  8. ARM 编译工具keil 和 IAR 命令行编译和下载

    关注.星标公众号,不错过精彩内容 来源:网络 编辑整理:strongerHuang 可能很多人都不习惯使用,Keil.IAR自带的编辑器,可能代码补全.错误提示.高亮等编辑功能相对来说支持的不是很好, ...

  9. c语言文件组织与多文件gcc命令行编译

    c语言文件组织与gcc命令行编译 最近在学习操作系统,关系到一些c语言文件组织,利用基本的编译链接等等的知识,简单记录如下 文件组织 通过实践出真知,记录如下: 编写文件:hello.c hello. ...

最新文章

  1. Android EditView 软键盘把布局顶上去的处理方法
  2. 架构师是如何炼成的?以天猫APP架构开发模式升级工程为例
  3. SciTE for Ruby的配置
  4. C++ STL究竟有多慢?
  5. tomcat android https,tomcat 配置 https, android端 访问
  6. 在pl/sql中使用exp/imp工具实现oracle数据导出/导入
  7. python namespace unique_Python使用uuid库生成唯一标识ID
  8. 电脑键盘功能介绍_Excel应用041:全能电脑抽奖神器(功能介绍)(原创作品) ?...
  9. sqlmap简单中文说明
  10. python批量复制粘贴_用python批量复制特定图片
  11. python有趣小程序-抖音最火的整蛊表白小程序如何做出来的?教你用python做出
  12. paip.web service技术在 JAVA与.NET中的应用流程方案
  13. 网站跳出率过高的原因有哪些?怎么解决?
  14. 常用期刊、会议的简称缩写(深度学习图像处理领域)
  15. 一篇文章,中文发完英文发,算“一稿多投”吗?
  16. C#毕业设计——基于C#+asp.net+sqlserver的视频点播系统设计与实现(毕业论文+程序源码)——视频点播系统
  17. 时间序列(一)基本概念
  18. 【T3】备份账套提示“下标越界”
  19. 耐得住时间的考验,才能一步步逼近完美
  20. 《机房收费系统》软件需求说明书

热门文章

  1. linux 在线修复磁盘,linux磁盘修复相关命令
  2. layui.js和layui.all.js的区别
  3. 四步轻松实现用Visio画UML类图
  4. 环信IM即时通讯集成-遇到问题及创建默认会话+默认欢迎语
  5. BPMN2.0规范简述
  6. 彻底卸载服务器上的Oracle
  7. ESP32/ESP8266
  8. VBA-循环语句总结
  9. NOI.5.22津津的储蓄计划
  10. 什么是格局?如何提升自我格局?做到这一点就够了!