vc命令行编译c++

vc命令行编译c++

ID:26085042

大小:179.50 KB

页数:19页

时间:2018-11-24

vc命令行编译c++_第1页
vc命令行编译c++_第2页
vc命令行编译c++_第3页
vc命令行编译c++_第4页
vc命令行编译c++_第5页
资源描述:

《vc命令行编译c++》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译器cl.exe连接器mlink.exe编译格式:cl[option...]file...[option

2、file]...[lib...][@command-file][/linklink-opt...]option是编译参数file是编译的源文件lib是程序需要的依赖库command-file是命令行文件当命令行参数过长,CMD不支持时,可将一部分命令移到文件中,附加该文件使得文件中的命令有效link-opt是链接选项,在输入/link后输入链接选项,则可以把这些选项传递给链接器。注意:在格式中[option]file[option]file虽然

3、是options是分开了,但是所有的options都是同时作用于所有file的。例如cl/MTmain.cpp/LDsubmain.cpp的意思是/MT/LD同时对这个两个文件起作用。相同的/互斥的参数,以后出现的为准。例如cl/Fo”src\”main.cpp/Fo”symbol\”submain.cpp生成的obj文件都会放在symbol文件夹下。下面介绍编译器(cl)的参数(options)有些参数后面标记过期,该参数在VS2005下仍然有效,但是在后续版本中可能会被删除。在VS2005中可能会有其他参数来代替过期参数,在各个过期参数中会有

4、说明。优化选项:/O1体积最小优化相当于/Og/Os/Oy/Ob2/Gs/GF/Gy的组合/O2速度最快优化相当于/Og/Oi/Ot/Oy/Ob2/Gs/GF/Gy的组合/Ob扩展inline函数。/Ob0禁用内联。默认值。/Ob1仅仅内联被标识为inline,__inline__forceinline,在class定义中写函数实现的函数。例如classCTest{public:intGetInt(){returnm_iInt;}private:intm_iInt;}该函数在/Ob1的参数下,会被编译成内联函数。/Ob2包含/Ob1的情况,并且编译器

5、会把可以编译成内联,但是没有加上inline关键字的函数内联。/Oy省略帧指针。该参数被/O1/O2/Ox包含,如果需要使用帧指针,可以在后面加上/Oy-,即可使/Oy失效,该参数仅在x86下有效。/Od禁用Debug,加快编译速度,简化调试功能。/Og过期全局优化包括表达式省略和循环优化。表达式省略:a=b+c;d=b+c;e=b+c;在该优化下,b+c的值只计算一次存入临时变量。循环优化:i=-100;while(i<0){i+=x+y;}在该优化下,x+y的值会先计算出来,等效于:i=-100;t=x+y;while(i<0){i+=t;}/O

6、i用函数体替换函数调用。编译器会将内建函数的函数体替换掉函数调用语句,这样可以避免函数调用时的开销提高运行速度,但是扩大了代码长度。只有内建的函数才能被替换。库函数中的内建函数如下:_disable_outpfabsstrcmp_enable_outpwlabsstrcpy_inp_rotlmemcmpstrlen_inpw_rotrmemcpy_lrotl_strsetmemset_lrotrabsstrcat内建函数不存在于库中,而存在于编译器中。/Os代码长度优化/Ot运行速度优化以上两个优化只能取一种例子:对于函数intdiffer(intx

7、){returnx*71;}如果选择/Os代码长度优化,则编译为moveax,DWORDPTR_x$[ebp]imuleax,71;长度很短,但是该计算比较慢如果选择/Ot运行速度优化,则编译为moveax,DWORDPTR_x$[ebp]movecx,eaxshleax,3leaeax,DWORDPTR[eax+eax*8]subeax,ecx/Ox全面优化,默认速度优先。/Osx为代码长度优先总体来说用/O2比/Ox好,用/O1比/Oxs好。/Ox等价于/Ob2/Og/Oi/Ot/Oy/Osx等价于/Ob2/Og/Oi/Os/Oy代码生成选项:/

8、arch/arch:SSE允许采用SSE指令/arch:SSE2允许采用SSE2指令。SSE可参考http://baike.baidu.com/view/65687.htmSSE2可参考http://baike.baidu.com/view/65695.htm该参数仅应用于x86平台,在x64和Itanium处理上无效。SSE存在于各种奔腾和AMDAthlon处理器上,而SSE2仅存在于奔4处理器。当出现/clr编译选项时,/arch则不会对托管代码生效,仅仅对本地代码生效。/bigobj默认情况下obj文件拥有65536个addressable段。

9、使用该参数后将扩大为4294967296。大部分的模块将不会超过65536个段。但是某些自动生成的代码,或者

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。