首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

HelloWorld背后的故事!在运行exe可执行文件前发生了什么?

人物介绍

故事简介

编写源文件 预编译 编译 汇编 链接

一、编写源文件

  源代码:

二、预编译

预编译输入命令g++ -o HelloWorld.i -E HelloWorld.cpp

  该命令表示编译环节的第一步,也就是预编译!当然,这一步也可以被称为“编译预处理”!而这个 HelloWorld.i 即是预编译过后的文件!

序号主要行为

值得注意:这一步不会做出任何安全性和合法性的检查!

三、编译

编译请输入命令g++ -o HelloWorld.s -S HelloWorld.i

  该命令表示编译过程,也就是生成相应的汇编文件 HelloWorld.s 。

补充说明:其中语义分析又可以分为“静态语义分析”和“动态语义分析”两种。

四、汇编

汇编请输入命令:g++ -o HelloWorld.o -C HelloWorld.s

  该命令表示对 HelloWorld.s 文件进行汇编处理,生成对应的可重定位的二进制文件 HelloWorld.o ,也就是我们所熟知的机器语言对应的文件。

五、链接

链接请输入命令:g++ HelloWorld.cpp -o HelloWorld.exe

  通过调用链接器ld来链接程序运行需要的一大堆目标文件,以及所依赖的其它库文件,最后生成可执行文件., 链接的主要内容是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正确地衔接。

需要指出:链接分为“静态链接”和“动态链接”。

学习C/C++可到Q零基础学习圈(一零五三二六一二二零)

需要补充:

额外说明:

相册

预编译后的文件HelloWorld.i

  可以看到,代码量惊人的大!足足有两万多行!可想这个HelloWorld也不简单啊!

编译后的文件HelloWorld.s

  很明显看出,此时代码精简了很多!

汇编后的文件HelloWorld.o

  可以看出,记事本已经显示乱码了!

帮忙的朋友

文章就到这里了,谢谢阅读!希望你能重新认识编程哦~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200330A0S8UV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券