- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
剖析VC编译器及nmake
剖析VC编译器及nmake
Longlongago sunxuechen
第一节 当你看透了它华丽的外壳,你就真正拥有了它!
MyEclipse是开发java应用程序的一个非常好用的IDE,如同VC是c++的友好开发环境一样,最近看了一下java中ant,感觉以前都没有想过编译的顺序需要自己指定。
以前使用vc的话也只是有系统提供默认的编译顺序,有的时候真的不愿意去揭穿它背后的秘密,因为我怕接受不了华丽外壳后晦涩的本质。
由于一开始学习c++时候就是使用VC的IDE,导致只是学习到了c++的语法,对构建大型c++应用程序只是靠VC提供的编译环境,而丝毫没有想到中间的透明化处理,所以本质上来说,确实是学习了VC而不是学习了c++。
下面就从MakeFile谈起,来慢慢的深入了解一下真正的c++。
有用的路径:
E:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin
其中包括了一些动态链接库,有很多时候都需要被加载。
VC安装后的目录结构图
Common文件夹下应该是存放的Microsoft Visual Studio 公共资源,包括VB等均可使用。
VC98 文件夹下应该就是对应VC IDE 的一些资源。
下面我们要动手脚的地方就是VC98下的Bin目录,其中有一个很好的东西,就是cl.exe
平时我们运行VC时候经常出现cl.exe,这无疑是晴天霹雳,因为一般这种问题在新手看来都是很棘手的,就算是你接触VC有一段时间,也很难说你知道它的具体原因。
cl.exe : compile-link executor ,我的理解是这样的。
然后我们就近距离接触一下cl.exe
首先,准备一份见面礼,如下
#includestdio.h
void main()
{
printf(Hello CL !);
} 然后,将其拷贝到目录 E:\Program Files\Microsoft Visual Studio\VC98\Bin下,因为这样比较方便,有很多dll文件都在其下,而且最关键的是,它有一个环境变量注册文件:VCVARS32.BAT。
进入cmd,然后进入E:\Program Files\Microsoft Visual Studio\VC98\Bin,然后执行VCVARS32.bat,这样就注册好了编译器cl所要使用的环境变量,之后输入
这样,编译结束,你会得到一个test.obj和test.exe文件,然后你可以执行这个test.exe文件。
就算现在这样,我还是感觉受益匪浅,好像以前曾经尝试过使用cl,但是还是没有付诸实施,今天终于得见庐山真面目,还是感慨万千啊。
第二节 当你认为你拥有了它,其实你远远没有。
物以类聚,我们既然知道了有个cl,必然要知道有什么和它放在一起,他们又有什么作用,那么就让我们来看看E:\Program Files\Microsoft Visual Studio\VC98\Bin下还有什么好东东吧~
我们只关注可执行文件,如下
看看吧,1998年,是不是相见很晚啊!
然后,我们看到有个DUMPBIN,这个是经常用来查看二进制文件的,比如DLL,他可以告诉你DLL中有哪些函数,功能和TOOLs中的DEPENDS差不多。
另外,还有一个Editbin,看起来向修改二进制数据的,但是我还没试验成功~有错误~
还有就是link,这个一看就知道是连接用的,你可以直接使用link test.obj去产生test.exe,我试过了,绝对没错。
既然这样,就一定有个compile把,因为cl是compile和link的缩写嘛,而且一般的步骤都是这样的,首先是编译然后连接,到底是哪个文件呢,我确实没找到~
不得不引用一篇网上一篇很有思想的文章:
首先简单介绍一下程序是如何编译链接的。程序写好之后,我们进行编译和链接来产生可执行程序。这时候,编译器为了完成编译和链接,需要知道很多信息。比如要编译的文件是哪一个,使用哪些编译选项进行编译,编译好之后输出到哪里,输出文件叫什么名字等等。makefile 就是被vc使用保存这些信息的方法之一,编译时程序nmake根据makefile中的信息,在用相应选项执行编译,用相应执行链接,最后生成可执行文件。vc的编译程序是CL.EXE,链接程序是LINK.EXE。关于本文所提到的vc编译链接用的程序都在 目录 ...Microsoft Visual StudioVC98Bin 下。
整个过程如下。
在我看这个console程序的makefile的时候,突然怀疑vc6中,console,sdk,mfc等的编译也是通过执行外部的 nmake.exe来完成的。如果真是
您可能关注的文档
- 三维紧束缚能级计算.docx
- 三级医院评审监测指标汇总.doc
- 世界上最伟大的交易商(名言).doc
- 世界各国频段划分.doc
- 世界水文及水系特征.doc
- 世界艺术欣赏期末作业.docx
- 丙烯压缩机操作法.doc
- 丙烯氨氧化法制取丙烯腈新工艺.doc
- 丙烯腈的MSDS.doc
- 丙烯腈车间氟里昂制冷机组操作法.doc
- 云南师大附中2026届高考适应性月考卷(五)英语.doc
- 云南师大附中2026届高考适应性月考卷(五)政治答案.doc
- 浙江省金丽衢十二校2025学年高三第一次联考生物卷-2512金丽衢十二校.doc
- 浙江省强基联盟2025年12月高三联考地理 --浙江强基联盟12月高三联考.doc
- 浙江省强基联盟2025年12月高三联考化学试题卷答案.doc
- 浙江省强基联盟2025年12月高三联考化学.doc
- 江西省2026届高三上学期11月联考(JX)生物答案.doc
- 浙江省强基联盟2025年12月高三联考英语--浙江强基联盟12月高三联考DA.doc
- 浙江省金丽衢十二校2025学年高三第一次联考英语答案.doc
- 浙江省金丽衢十二校2025学年高三第一次联考英语试题.doc
原创力文档


文档评论(0)