admin 管理员组文章数量: 1087139
2024年3月29日发(作者:索引的原理)
注意:以下适合 PC 环境
●C/C++ 编译器需要的环境变数设定
古早以来,PC 上的 C 编译器,就需要两个环境变数:
LIB:这个环境变数告诉编译器说,必要的 libraries 在哪里(哪个磁碟目录下)
INCLUDE:告诉编译器说,必要的 header files 在哪里(哪个磁碟目录下)
为了让我们能够在任何 working directory 都叫得到编译器,当然我们必须设定 PATH。
C/C++ 编译器都需要这三个环境变数。
●以 Visual C++ 为例
以 Visual C++ 为例,如果安装後的档案布局如下:
C:MSDEVVC98BIN : 这里放有编译器
C:MSDEVVC98INCLUDE : 这里放有 C/C++ header files
C:MSDEVVC98LIB : 这里放有 C/C++ standard libraries
那麽你可以写一个批次档如下:
set PATH=C:MSDEVVC98BIN;C:MSDEVCOMMONMSDEV98BIN
set INCLUDE=C:MSDEVVC98INCLUDE
set LIB=C:MSDEVVC98LIB
之所以需要另外设定 PATH=C:MSDEVCOMMONMSDEV98BIN,是因为编译器 执行时需要
,而它被安装於 C:MSDEVCOMMONMSDEV98BIN 之中。
如果你写的程式不只是单纯的 C/C++ 程式,还用到了 MFC,一样可以在 console mode 下编译,这
时候你的环境变数应该如此设定:
set PATH=C:MSDEVVC98BIN;C:MSDEVCOMMONMSDEV98BIN
set INCLUDE=C:MSDEVVC98INCLUDE;C:MSDEVVC98MFCINCLUDE
set LIB=C:MSDEVVC98LIB;C:MSDEVVC98MFCLIB
多指定了 MFCINCLUDE 和 MFCLIB,就可以让编译器和联结器找到 MFC 的 header files 和 libraries。
如果你还需要用到 ATL,就得在 INCLUDE 环境变数中再加上 C:MSDEVVC98ATLINCLUDE。
●以 Borland C++Builder 为例
以 Borland C++Builder 为例,如果安装後的档案布局如下:
C:BORLANDCBuilder3BIN : 这里放有编译器
C:BORLANDCBuilder3INCLUDE : 这里放有 C/C++ header files
C:BORLANDCBuilder3LIB : 这里放有 C/C++ standard libraries
那麽你可以写一个批次档如下:
set PATH=C:BORLANDCBuilder3BIN
set INCLUDE=C:BORLANDCBuilder3INCLUDE
set LIB=C:BORLANDCBuilder3LIB
●如何在 console 中编译 C/C++ 程式
首先,开启一个 DOS Box(DOS Prompt, DOS VM),然後在该 DOS box 中执行上述写好的批次档,完
成环境变数的设定。你可以再在 DOS 提示号下键入 set 命令,看看环境变数的设定内容正确与否。
然後就可以直接在 DOS 提示号下键入编译器名称,开始编译了。如果你使用 Visual C++,就这麽做:
C:> CL
如果你使用 C++Builder,就这麽做:
C:> BCC32
至於特殊情况下需要什麽特殊的 options,就必须自己查一下啦。只要执行 CL /? 或 BCC32(其後不
加任何引数),便可看到所有的 compile options。
●编译器与联结器的关系
早期的编译过程与联结过程是分开的。换句话说我们必须做两个动作:
C:>Cl
C:> LINK xxx (xxx代表各个必要的 libraries)
或是:
C:> BCC32
C:> TLINK32 xxx (xxx代表各个必要的 libraries)
如今的编译过程与联结过程当然还是分开的,但是我们的动作只需一个:
C:> CL
或是:
C:> BCC32
这是因为编译器变聪明了,除非你指定 /c option(表示只编译不联结),否则它便自动为你呼叫联结
器进行联结动作。过去以来颇令 programmer烦恼的「该使用哪些 libraries」的问题,编译器也有了
聪明的解决方案:它将程式中用到的 library functions 记录起来,同时也录下它们所属的library 名称,
於是联结器就可以从这个表格中知道要联结哪些 libraries 了。
版权声明:本文标题:如何在DOS下编译C文件 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1711686658a605638.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论