visual C++ and gcc

::: {.container}
::: {.post}
::: {.show-content}
visual c++6.0历史悠久

,,找到提及最多的就是用这款。。年龄跟我差不多大的编译器。

软件有些老了,win7win8win10记得以兼容模式运行。


命令行编译

cl.exe是微软c/c++编译器...从此不用新建工程新建项目。。。。。。只需cl 
xdd.cpp

再xdd.exe运行,就可以了。对新手很友好吧,只需配置下环境变量。

::: {.image-package}
\

::: {.image-caption}
:::
:::

cpp hello.c > hello.i      只进行预编译。cpp是预编译器

cl编译器的参数:

cl /?  查看帮助

-GX: 启动同步异常处理


gcc是自由软件计划下的产物,我看黑防的书介绍是在这个编译器下运行的,干脆在linux上也学习学习。

先把最简单的hello源代码写好放在桌面,编译后的文件默认为a.out,也可用**-o选项设置文件名**。

::: {.image-package}
\

::: {.image-caption}
:::
:::

gcc -o xdd xdd.c
动态链接,会直接将源代码变成可执行文件(将四步合为一体)

gcc -o xdd xdd.c --static 静态链接

gcc  -E xdd.c -o hello.i    只进行预编译,输出文件名为hello.i

gcc -S hello.i -o hello.s    继续上一步,编译,源码——>汇编代码

gcc -c hello.s -o hello.o    汇编,汇编代码——>二进制代码

ld  -static crt1.o crti.o crtbeginT.o hello.o -start-group -lgcc
-lgcc_eh -lc -end-group crtend.o crtn.o           
链接,将二进制代码和一些其他要用的部分结合。生成可执行文件

-c
选项,将源代码xx.cpp转化为目标文件xx.obj,它将预编译、编译、汇编,三步合为一个选项。

-Wall 可以选择提示程序的错误信息,方便调试

gcc -v  查看版本信息

gcc --help 查看帮助信息

为什么我们要了解源码变可执行文件背后的过程?不了解,何谈编写高效的源码。

?gcc 和 g++的区别

gcc ( the GNU compiler collection),GNU的编译器集合。

g++,c++编译器。gcc包括g++。
:::
:::
:::