如何在 Linux 中编译和运行 C/C++ 程序

2023-10-31

C 是一种强大的结构化编程语言,用于开发系统软件。根据设计,C 提供了可以有效映射到典型机器指令的结构。它是由丹尼斯·里奇在贝尔实验室。 C 程序源是自由格式的文本,使用分号作为语句终止符,使用大括号对条件、函数或循环等语句块进行分组。

C 是一种编译型编程语言。创建 C 程序后,首先需要使用 C 编译器对其进行编译。它将生成可以在您的系统上运行的二进制文件。

本教程将帮助您通过命令行在Linux/Unix系统中运行C/C++程序。我们将使用 GCC(GNU 编译器集合)中的“gcc”和“g++”命令来编译 C/C++ 程序。这里:

  • gcc是来自 GCC 的 GNU C 编译器。
  • g++是来自 GCC 的 GNU C++ 编译器。

安装开发工具

为了运行 C 程序,您必须在 Linux 系统上安装开发工具包。运行以下命令之一以根据您的操作系统安装开发工具包。

  • 基于Redhat的系统:
    sudo yum groupinstall "Development Tools" 
    
  • 基于 Debian 的系统:
    sudo apt-get install build-essential   
    

用 C 创建 Hello World 程序

对于这个例子,我选择了C 你好世界程序。在您的系统上创建一个新文件,如下所示:

vim helloworld.c 

使用以下内容

1
2
3
4
5
6
#include
int main()
{
   printf(“你好世界!”);
   return 0;
}

在 Linux 中编译和运行 C/C++ 程序

我使用 GNU C 编译器编译上面的 hello world C 程序,如下所示:

gcc helloworld.c -o hello 

[OR]使用以下命令来使用 C++ 编译器。

g++ helloworld.c -o hello 

上述命令将创建一个名为的可执行文件hello在您当前的目录中。您可以像其他命令一样直接运行它。

./hello 

您还可以将文件复制到 bin 目录 (/usr/local/bin) 下,以使它们在系统范围内可访问。

尝试另一个 C 示例

让我们尝试使用另一个带有用户输入的 C 程序。对于这个例子,我使用了这个示例 C 程序从用户输入两个整数并计算它们的总和。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include
int main()
{
 
    int i, j, sum;
    
    scanf(“输入第一个整​​数:%d”, &i);
    scanf(“输入第二个整数:%d”, &j);
    
    sum = i + j;
 
    printf(“总和是:%d\n”, sum);
    return 0;
}

现在编译并运行C program

gcc sum.c -o sum 
./sum 

结论

在本教程中,您学习了在Linux系统中通过命令行编译和运行C程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Linux 中编译和运行 C/C++ 程序 的相关文章

  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现

随机推荐

  • 第13章Stata Logistic回归分析

    目录 13 1二元Logistic回归分析 案例延伸 延伸1 设定模型预测概率得具体值 延伸2 使用Probit模型对二分类因变量进行拟合 13 2多元Logistic回归分析 案例延伸 延伸 根据模型预测每个样本视力低下程度的可能性 13
  • Java输入流之BufferReader和Scanner的用法!

    在Java中 我们都知道Java的标准输入串是System in 但是我们却很少在Java中看到谁使用它 这是因为我们平时输入的都是一个字符串或者是一个数字等等 而System in提供的read方法是通过字节来读取数据的 所以对我们来说太
  • react hooks的用法

    一 页面初始化的结构 export const SearchPanel gt 二 声明字段的类型 请求字段类型 const param setParam useState name personId 四 写请求接口的代码 useEffect
  • java随机选人,实现对文本文件操作

    理解 全程无报错 IDEA全绿通过 每步都有注解 因为防止 main主代码 太长 将很多方法都封装了 编程小白 有不足的地方希望能指正出来吧 好的处理点 我觉得自己比较好的地方是 将页面方法返回值 设置为集合 这样打印页面的时候 能返回路径
  • CTF-Crypto题目分析__1

    CTF Crypto题目分析 1 以下所有题目提交flag的格式为SeBaFi 第一题 考察base36编码 下载附件后可得 597142166468670232704404065453992639482284357949191392729
  • Java 敏感词过滤工具类及文本

    最主要最主要的文本在此 链接 https pan baidu com s 163mWeLecBdV1tA1WstXnuw pwd yyds 提取码 yyds 复制这段内容后打开百度网盘手机App 操作更方便哦 工具类代码 就是解析文本进行过
  • 基于PyQT5的学生成绩管理系统(运行简单,简单有文档,带注释,含源码)

    自己做的项目 全CSDN唯一 禁止转载 基于pyqt5的学生成绩管理 带登录注册 基本的学生信息的增加 修改 删除 查询和选课 课程信息的增加 修改 删除 查询 成绩的添加 修改 查询等功能 用pycharm导入 安装依赖包 配置好数据库就
  • Java运算符、流程控制

    Java运算符 流程控制 运算符 算术运算符 public class Demo1 public static void main String args 算术运算符 int x 2046 x x 100 100 System out pr
  • 如何检查 MacOS 版本(GUI+CLI)

    macOS 12 是 Apple 团队的最新版本 它的代号是蒙特雷 源自蒙特雷南部海岸的一片未绘制地图的荒野地区 这是最先进的桌面操作系统 功能和美观达到了新的水平 本教程将介绍如何从桌面和命令行界面检查 macOS 版本 检查 MacOS
  • 如何在 Linux 中编译和安装最新的 Redis

    Redis 是一种开源内存数据结构存储 可用作数据库 缓存和消息代理 它以其高性能 可扩展性和易用性而闻名 在本文中 我们将指导您完成在 Linux 上编译和安装最新 Redis 版本的过程 在开始之前 请确保您拥有 Linux 服务器的管
  • 如何计算 Linux 中文件的行数

    有时您可能需要计算 Unix Linux 系统中文件的总行数 本教程帮助您通过命令行使用多种方法来统计 Linux 系统中文件的行数 计算行数wc Command The wc命令是 Unix Linux 系统的 字计数器 这是 Linux
  • 检查脚本是否在 Linux 中以 root 用户身份运行

    有时 shell 脚本需要以 root 用户身份运行才能以管理员权限执行某些任务 通常 可以使用 Sudo 命令来完成该任务 如果在某些情况下您仍然需要强制用户以 root 用户身份运行脚本 您可以向脚本添加代码来检查脚本是否以 root
  • 如何在 CentOS/RHEL 7.5 和 6.9 上安装 PHP 7.2、Apache 2.4、MySQL 5.6

    PHP团队已经发布了升级版本7 2 与 5 X 版本相比 它有许多变化和改进 本文将帮助您在 CentOS RHEL 7 6 操作系统上安装 PHP 7 Apache 2 4 和 MySQL 5 6 本教程已在CentOS 7 4上进行测试
  • 如何清除 Windows 中的 ASP.NET 临时文件

    开发 ASP NET 应用程序时 框架会编译并存储临时文件以提高性能 随着时间的推移 这些文件可能会累积并占用大量存储空间 定期清除 ASP NET 临时文件可以帮助维护您的开发环境并释放宝贵的磁盘空间 本文提供了有关如何在 Windows
  • 允许 ssm:GetParameter 的 AWS IAM 策略

    AWS Systems Manager SSM Parameter Store 提供集中式安全存储解决方案 用于管理您的配置数据 机密和应用程序设置 使用 SSM Parameter Store 时可能执行的关键操作之一是检索参数的值 在本
  • PHP 技巧:使用分隔符将字符串拆分为数组

    在 PHP 中 将字符串拆分为数组是一项常见任务 可以使用各种函数和技术来完成 这 explode 函数是一个方便高效的选项 它允许您根据分隔符将字符串拆分为数组 在本文中 我们将探讨如何在 PHP 中使用explode 函数将字符串拆分为
  • Visual Studio Code 中 Git 集成的快捷方式

    Git 是一种流行的版本控制系统 开发人员使用它来跟踪代码更改并与其他人在项目上进行协作 Visual Studio Code VS Code 具有内置的 Git 集成 可以轻松地直接从编辑器管理和提交更改 在本文中 我们将讨论 Visua
  • 如何通过 SSH 下载和上传文件

    SSH 是访问远程服务器最安全的协议 它通过通信通道提供最高级别的端到端数据安全性 这SCP 安全复制 命令使用 SSH 协议在远程和本地服务器之间复制文件 远程服务器必须有正在运行的 SSH 服务器 本教程将帮助您了解通过 SSH 协议下
  • 如何在 CentOS/RHEL 7 上创建没有 Shell 访问权限的 SFTP 用户

    本教程将帮助您在 CentOS 和 RedHat 系统上创建仅 SFTP 用户 无 ssh 访问权限 用户只能通过SFTP访问连接服务器 并允许访问指定目录 用户无法通过 SSH 访问服务器 按照以下教程创建仅限 sftp 的帐户 第 1
  • 如何在 Linux 中编译和运行 C/C++ 程序

    C 是一种强大的结构化编程语言 用于开发系统软件 根据设计 C 提供了可以有效映射到典型机器指令的结构 它是由丹尼斯 里奇在贝尔实验室 C 程序源是自由格式的文本 使用分号作为语句终止符 使用大括号对条件 函数或循环等语句块进行分组 C 是