zoukankan      html  css  js  c++  java
  • C学习笔记——使用CL编译器

    cl.exe 是一款控制 Microsoft C 和 C++ 编译器与链接器的工具。cl.exe 只能在 Windows 2000、Windows XP 和 Windows Server 2003 操作系统上运行。

    一、编译器CL介绍

    编译器产生通用对象文件格式 (COFF) 对象 (.obj) 文件。链接器产生可执行文件 (.exe) 或动态链接库文件 (DLL)。

    注意,所有编译器选项都区分大小写。

    若要编译但不链接,请使用/c。 

    语法:

    CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...]
    选项option具体内容可以查看 http://msdn.microsoft.com/zh-cn/library/fwkeyyhe%28v=vs.80%29.aspx
    二、CL常见问题
         在我们使用CL编译我们的C或者C++文件的时候,通常会出现两个文件,一个是*.exe文件,另外一个是*.obj文件。可是你曾经是否想
    过了解一下*.obj文件是干什么的吗?很惭愧,我原来没有,今天看到别人的博客,突然发现自己很没有这种探索意识,以后还是要多加强。
    闲话少说,现在我们来了解一下*.obj文件你是干什么的。
      现在假定我们写了一个输出”hello world“的文件,文件名是test.c。打开我们的“CMD",使用CL test.c来编译,现在出现了一
    个test.exe文件和test.obj文件。我们用记事本打开我们的test.obj文件,结果如下:

      在这里obj是目标文件,他是CL编译器把c文件编成机器代码的文件,这个文件是跨平台的,听说这里需要编译原理的知识,细节就不再
    讲了(呵呵,我也讲不了)。
      而exe文件是通过link将它编译成你现在使用的系统能够识别的格式,我们用的是Windows,所以是exe文件。
      使用“cl /c”命令会只生成一个obj文件,没有exe文件,在这里需要使用link命令工具来生成exe文件。link是一个连接器,就是链
    接机器语言转换成系统能识别的文件。使用命令”link test.obj"命令就产生了我们想要的test.exe文件。这下就可以在win平台运行了。 

          如果在cl命令后面加上2个参数/c和/P(p大写),就会多了1个test.i文件。然后我打开它,尽然有400多行,它会将我们的stdio.h中的内容

    包含进来,但是其中有个细节,就是stdio.h文件中也包含了其他文件,所以全部展开后就400多行了!这里要说明的是#include<stdio.h>是编

    译的时候是将stdio.h文件包含进来编译的。

            同时,在这里记录一下,这个也是今天才知道的,在C中 int长度不一定就是4位 它跟编译器有关 它不像java C# 长度是统一的

  • 相关阅读:
    Hibernate4学习day0--hibernate封装--注解--单元测试
    Hibernate4学习day01--简介--基本配置
    java基础day13---引用数据类型
    java基础day14---static关键字-----继承
    java基础day12---this 关键字-----参数传递
    day05 Struts2文件上传和下载---防重复提交
    java基础day11---空指针异常----引用类型--自定义类型赋值--封装
    java基础的第二轮快速学习!day10
    Struts2,大爷你好!第四天
    java基础的第二轮快速学习!day09
  • 原文地址:https://www.cnblogs.com/bugY/p/2142086.html
Copyright © 2011-2022 走看看