C++ 编译和运行的过程中文件的扩展名

devtools/2024/10/18 18:15:44/

在 C++ 编译和运行的过程中,文件的扩展名会随着每个步骤的进展而发生变化。以下是一个典型的 C++ 编译和运行过程,以及每一步中文件扩展名的变化:

1. 源代码文件(.cpp.h

  • 源代码文件: C++ 源代码文件通常以 .cpp 作为扩展名,头文件以 .h 作为扩展名。
    • 示例: main.cpp, mylib.cpp, mylib.h

2. 预处理(生成 .i 文件)

  • 预处理: 预处理器处理源代码中的宏定义、头文件包含和条件编译指令,生成预处理后的文件。预处理后的文件通常以 .i 作为扩展名,但这个文件通常不会显式生成,除非你特别指定。
    • 命令: g++ -E main.cpp -o main.i
    • 示例: main.i

3. 编译(生成 .s 文件)

  • 编译: 编译器将预处理后的源代码转换为汇编代码,生成汇编文件。汇编文件通常以 .s 作为扩展名,但这个文件通常不会显式生成,除非你特别指定。
    • 命令: g++ -S main.i -o main.s
    • 示例: main.s

4. 汇编(生成 .o 文件)

  • 汇编: 汇编器将汇编代码转换为机器代码,生成目标文件。目标文件通常以 .o 作为扩展名(在 Windows 上通常为 .obj)。
    • 命令: g++ -c main.s -o main.o
    • 示例: main.o

5. 链接(生成可执行文件或共享库)

  • 链接: 链接器将一个或多个目标文件和库文件链接在一起,生成可执行文件或共享库。可执行文件在 Unix/Linux 系统上通常没有扩展名,在 Windows 上通常以 .exe 作为扩展名。共享库在 Unix/Linux 系统上通常以 .so 作为扩展名,在 Windows 上通常以 .dll 作为扩展名。
    • 生成可执行文件:
      • 命令: g++ main.o -o main
      • 示例: main(Unix/Linux)或 main.exe(Windows)
    • 生成共享库:
      • 命令: g++ -shared -o libmylib.so mylib.o
      • 示例: libmylib.so(Unix/Linux)或 mylib.dll(Windows)

6. 运行可执行文件

  • 运行: 最终生成的可执行文件可以直接运行。
    • 命令: ./main(Unix/Linux)或 main.exe(Windows)

总结

以下是每一步中文件扩展名的变化总结:

  1. 源代码文件: .cpp(源文件),.h(头文件)
  2. 预处理: .i(预处理文件,通常不显式生成)
  3. 编译: .s(汇编文件,通常不显式生成)
  4. 汇编: .o(目标文件,Unix/Linux),.obj(目标文件,Windows)
  5. 链接:
    • 可执行文件: 无扩展名(Unix/Linux),.exe(Windows)
    • 共享库: .so(Unix/Linux),.dll(Windows)

http://www.ppmy.cn/devtools/99285.html

相关文章

Windows:Node.js下载与安装教程

1、进入nodejs官网:https://nodejs.org/en 2、配置系统参数 3、运行cmd,输入 node -v 出现安装版本即安装成功

前端性能优化:构建快速且流畅的Web体验

前端性能优化:构建快速且流畅的Web体验 在现代Web开发中,性能优化是提升用户体验的关键因素之一。随着网络环境的变化和用户需求的增长,如何让Web应用在各种设备上快速加载并流畅运行变得尤为重要。本文将深入探讨前端性能优化的各种技术和策…

【设计模式】工厂模式和抽象工厂模式

工厂模式 function User(role, pages) {this.role role;this.pages pages; }// new User(admin, [home, user, setting]); // new User(user, [home, user]); // new User(guest, [home]);function UserFactory(role) {switch (role) {case admin:return new User(role, [ho…

云计算实训32——roles基本用法、使用剧本安装nginx、使用roles实现lnmp

一、安装nginx并更改其端口 编辑hosts配置文件 [rootmo ~]# vim /etc/ansible/hosts 创建目录 [rootmo ~]# mkdir /etc/ansible/playbook 编辑配置文件 [rootmo ~]# vim /etc/ansible/playbook/nginx.yml 执行测试 [rootmo ~]# ansible-playbook /etc/ansible/playbook/n…

美国高防服务器到底怎么选

美国高防服务器因其强大的硬件设施、高度的网络连接性、丰富的带宽资源和先进的防御技术而受到全球用户的欢迎。以下是选择美国高防服务器时需要考虑的关键因素,rak部落为您整理发布美国高防服务器到底怎么选。 确定服务器需求 容量和带宽:根据业务规模…

win双击运行jar文件

常规运行:java -jar xxx.jar 方法一、 1、jar包右键属性 2、更改打开方式,设置为默认 选择打开方式使用 javaw.exe C:\Program Files\Java\jdk1.8.0_201\bin\javaw.exe 3、修改注册表 winr 中 regedit 打开注册表 计算机\HKEY_CLASSES_ROOT\Appli…

CocosCreator3.8 IOS 构建插屏无法去除的解决方案

CocosCreator3.8 IOS 构建插屏无法去除的解决方案 在实际项目开发过程中,我们通常无需CocosCreator 自带的插屏,一般采用自定义加载页面。 然后在构建IOS 项目时,启用(禁用)插屏无法操作,如下图所示&#…

Docker部署archery项目的注意事项

archery是什么?看看archery官网的介绍吧:https://archerydms.com/ 是一个一站式的SQL审核平台,官网给的也有体验地址: https://demo.archerydms.com/login/ 账号:archer 密码:archer 这是一个开源项目&a…