当前位置: 首页 > news >正文

ubuntu中,c和c+程序,预编译、编译、链接和运行命令

目录

  • 安装编译器
  • 一.c
    • 编译+运行(粗暴简单)
    • 1.编写 C 程序:
    • 2. 预处理:
    • 3.编译:
    • 4. 汇编:
    • 5. 链接:
    • 6.运行
  • 二.c++
    • 编译+运行(粗暴简单)
    • 1.编写 C++ 程序:
    • 2.预处理:
    • 3.编译:
    • 4.汇编:
    • 5. 链接:
    • 6.运行程序:
  • 三 . 关键区别
  • 四. 其他注意事项

安装编译器

确保安装了 gcc(用于 C 程序)和 g++(用于 C++ 程序)编译器:

sudo apt update
sudo apt install build-essential  # 安装 GCC 和 G++ 编译器

一.c

编译+运行(粗暴简单)

使用 gcc 编译器编译程序,并生成一个可执行文件。gcc hello.c -o hello编译成功后,运行生成的可执行文件:./hello
输出:Hello, Ubuntu! (C)

1.编写 C 程序:

nano hello.c 打开或创建

输入以下代码:

#include <stdio.h>
int main() {printf("Hello, Ubuntu! (C)\n");return 0;
}

2. 预处理:

gcc -E hello.c -o hello.i
-E:仅执行预处理步骤。
hello.i:预处理后的输出文件。

3.编译:

gcc -S hello.i -o hello.s
-S:生成汇编代码。
hello.s:汇编代码文件。

4. 汇编:

gcc -c hello.s -o hello.o
-c:生成目标文件(二进制)。
hello.o:目标文件。

5. 链接:

gcc hello.o -o hello
将目标文件链接为可执行文件。
运行程序:

6.运行

./hello
输出:Hello, Ubuntu! (C)

二.c++

编译+运行(粗暴简单)

使用 g++ 编译器编译程序,并生成一个可执行文件。g++ hello.cpp -o hello_cpp
编译成功后,运行生成的可执行文件:./hello_cpp
输出:Hello, Ubuntu! (C++)

1.编写 C++ 程序:

nano hello.cpp  打开或创建

输入以下代码:

#include <iostream>
int main() {std::cout << "Hello, Ubuntu! (C++)" << std::endl;return 0;
}

2.预处理:

g++ -E hello.cpp -o hello.ii
-E:仅执行预处理步骤。
hello.ii:预处理后的输出文件。

3.编译:

g++ -S hello.ii -o hello.s
-S:生成汇编代码。
hello.s:汇编代码文件。

4.汇编:

g++ -c hello.s -o hello.o
-c:生成目标文件(二进制)。
hello.o:目标文件。

5. 链接:

g++ hello.o -o hello_cpp
将目标文件链接为可执行文件。

6.运行程序:

./hello_cpp
输出:Hello, Ubuntu! (C++)

三 . 关键区别

编译器:

C 程序使用 gcc。
C++ 程序使用 g++

文件扩展名:

C 程序通常使用 .c 扩展名。
C++ 程序通常使用 .cpp 或 .cc 扩展名。

头文件:

C 程序使用 #include <stdio.h>。
C++ 程序使用 #include <iostream>

四. 其他注意事项

调试:可以使用 gdb 调试编译后的程序。

sudo apt install gdb
gdb ./hello

优化:在编译时添加 -O2 或 -O3 标志以启用优化。

gcc -O2 hello.c -o hello

多文件编译:如果有多个源文件,可以一起编译:

gcc file1.c file2.c -o program
http://www.xdnf.cn/news/671311.html

相关文章:

  • 交换机 路由器
  • 2025 年江西研究生数学建模竞赛题A题电动汽车充电桩共享优化与电网安全协同模型完整思路 模型代码 结果 成品分享
  • 模板应用更新同步到所有开发中的应用
  • 思澈LCD-kit测试过程记录
  • 跳表(Skip List)查找算法详解
  • 2024年12月英语六级(第二套)真题+解析全24页
  • MySQL-5.7 修改密码和连接访问权限
  • 基于Python爬虫技术的对歌曲评论数据可视化分析系统
  • LabVIEW比例阀性能测试试验台
  • 【Python】日期计算和自动化运行脚本
  • 网站资源加载出现401错误
  • 用户配置文件(Profile)
  • Prim算法剖析与py/cpp/java语言实现
  • 在 Linux 系统上连接 GitHub 的方法 (适用2025年)
  • idea配置android--以idea2023为例
  • 无锁编程介绍
  • 卫星姿态描述基础知识学习记录(部分)
  • MCP如何助力环境保护?——数据智能与Python的绿色革命
  • C++(初阶)(二十)——封装实现set和map
  • Python打卡训练营学习记录Day38
  • 25、web场景-【源码分析】-静态资源原理
  • Mongodb | 基于Springboot开发综合社交网络应用的项目案例(中英)
  • VS Code 安装后设置中文界面并添加常用插件的详细指南
  • 仿盒马》app开发技术分享-- 确认订单页(数据展示)(端云一体)
  • 过河卒--记忆化搜索
  • OpenHarmony平台驱动使用(五),HDMI
  • Python实现VTK-自学笔记(5):在三维世界里自由舞蹈——高级交互与动态可视化
  • @recogito/annotorious图像标注库
  • java 项目登录请求业务解耦模块全面
  • (自用)Java学习-5.16(取消收藏,批量操作,修改密码,用户更新,上传头像)