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

Linux——创建编写并编译一个C程序

一、使用vim编辑器

在Linux系统下,使用vim编辑器创建、编写并编译一个C程序是一个常见的做法。以下是一个详细的步骤指南,我们将创建一个简单的C程序,该程序的功能是输出“Hello, World!”到终端。

步骤 1: 打开vim编辑器并创建C程序文件

  1. 打开终端。
  2. 输入命令vim hello.c来创建并编辑一个名为hello.c的C程序文件。如果vim没有安装在你的系统上,你可以通过包管理器来安装它(例如,在基于Debian的系统上,使用sudo apt-get install vim命令)。
  3. 安装时可能出现这样的报错:
E: 有几个软件包无法下载,要不运行 apt-get update 或者加上 --fix-missing 的选项再试试?

执行下面这两个命令,再重新安装即可

sudo apt-get update
sudo apt-get install --fix-missing

步骤 2: 在vim中编写C程序

一旦vim打开,你将看到一个空白屏幕(或可能是vim的启动屏幕,按i键进入插入模式)。

  1. i键进入插入模式。
  2. 输入以下C程序代码:
#include <stdio.h>  int main() {  printf("Hello, World!\n");  return 0;  
}
  1. Esc键退出插入模式。

步骤 3: 保存并退出vim

在退出插入模式后,你可以通过以下步骤保存你的文件并退出vim

  1. 输入:wq(这表示写入并退出)。
  2. Enter键保存文件并关闭vim

步骤 4: 编译C程序

现在,你已经有了一个名为hello.c的C程序文件,接下来需要编译它。在终端中,使用GCC(GNU Compiler Collection)编译器来编译你的C程序。

  1. 输入gcc hello.c -o hello命令来编译hello.c文件,并将生成的可执行文件命名为hello。如果GCC没有安装在你的系统上,你需要先安装它。

步骤 5: 运行C程序

编译完成后,你可以在终端中通过输入./hello命令来运行你的程序。如果一切顺利,你将在终端中看到输出“Hello, World!”。

总结

这就是在Linux系统下,使用vim编辑器创建、编写并编译一个C程序的全过程。vim是一个功能强大的文本编辑器,通过掌握它的基本命令和快捷键,你可以更加高效地编写和编辑代码。此外,GCC是C语言编程中常用的编译器之一,它能够将C源代码编译成可执行文件。

二、使用nano编辑器

在Linux系统下创建、编写并编译一个C程序是一个相对直接的过程。我们将创建一个简单的C程序,该程序的功能是输出“Hello, World!”到终端。

步骤 1: 创建C程序文件

首先,你需要使用文本编辑器创建一个新的C程序文件。Linux提供了多种文本编辑器,如nanovimgedit(GNOME桌面环境)等。这里我们以nano为例,因为它在大多数Linux发行版中都可用且易于使用。

  1. 打开终端。
  2. 输入命令nano hello.c来创建并编辑一个名为hello.c的文件。如果nano没有安装在你的系统上,你可以使用sudo apt-get install nano(对于基于Debian的系统)来安装它,或者选择其他你喜欢的编辑器。

步骤 2: 编写C程序

在打开的nano编辑器中,输入以下C程序代码:

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

步骤 3: 保存并退出编辑器

  • 如果你使用的是nano,可以通过按Ctrl + O,然后按Enter键来保存文件,之后按Ctrl + X退出编辑器。
  • 如果你使用的是vim,可以通过按Esc键退出插入模式,然后输入:wq(表示写入并退出)并按Enter键来保存并退出。

步骤 4: 编译C程序

在终端中,使用GCC(GNU Compiler Collection)编译器来编译你的C程序。如果你的系统上还没有安装GCC,你可以通过你的Linux发行版的包管理器来安装它(例如,在基于Debian的系统上,使用sudo apt-get install build-essential命令来安装GCC和其他必要的编译工具)。

  1. 输入gcc hello.c -o hello命令来编译hello.c文件,并将生成的可执行文件命名为hello

步骤 5: 运行C程序

编译完成后,你可以在终端中通过输入./hello命令来运行你的程序。如果一切顺利,你将在终端中看到输出“Hello, World!”。

总结

以上就是在Linux系统下创建、编写并编译一个C程序的基本步骤。通过这个过程,你可以开始探索C语言编程的更多方面,包括变量、函数、控制结构等。

相关文章:

Linux——创建编写并编译一个C程序

一、使用vim编辑器 在Linux系统下&#xff0c;使用vim编辑器创建、编写并编译一个C程序是一个常见的做法。以下是一个详细的步骤指南&#xff0c;我们将创建一个简单的C程序&#xff0c;该程序的功能是输出“Hello, World!”到终端。 步骤 1: 打开vim编辑器并创建C程序文件 …...

window下idea中scala的配置

目录 Scala安装步骤&#xff1a; 1.下载scala安装包 2.配置环境变量&#xff1a; 3.检查scala是否安装成功&#xff1a; 4.idea安装scala插件 5.导入scala-sdk 6.新建scala文件 Scala安装步骤&#xff1a; 1.下载scala安装包 访问Scala官网&#xff1a;https://www.sca…...

Qt C++设计模式->享元模式

享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;旨在通过共享相同对象来减少内存使用&#xff0c;尤其适合在大量重复对象的情况下。它通过将对象的可共享部分抽取出来&#xff0c;并在多个上下文中共享&#xff0c;从而避免对象的多次创建…...

前端实用技能

焦点聚焦 import Vue from vue // 插件对象(必须有 install 方法, 才可以注入到 Vue.use 中) export default {install () {Vue.directive(fofo, {inserted (el) {el el.querySelector(input)el.focus()}})} }格式化日期格式 export const formatDate (time) > {// 将xx…...

Android LiveData 数据倒灌

相关类型的文章很多&#xff0c;这里只做个人总结和其余的方法推荐 1.什么是数据倒灌&#xff1f; 所谓的“数据倒灌”&#xff1a;其实是类似粘性广播那样&#xff0c;当新的观察者开始注册观察时&#xff0c;会把上次发的最后一次的历史数据传递给当前注册的观察者。 一方…...

umi项目中使用mockj生成数据模拟请求调用

Mock.js简介 Mock.js 是一个轻量级且无依赖的JavaScript库&#xff0c;用于生成模拟数据。它可以帮助开发者在前端开发过程中模拟后端API接口&#xff0c;以便进行快速原型设计和测试。Mock.js 提供了丰富的API来模拟各种类型的数据&#xff0c;如字符串、数字、日期、数组等。…...

事件【JavaScript】

1. 事件 事件是用户或浏览器动作的表示&#xff0c;JavaScript 中的一切交互都是通过事件来处理的。 2. 事件冒泡&#xff08;Event Bubbling&#xff09; 事件冒泡是指事件从最具体的元素&#xff08;即触发事件的元素&#xff09;开始触发&#xff0c;然后逐级向上传播到较…...

【Linux】Linux基本命令

目录 文件和目录操作&#xff1a; ls cd pwd cp mv rm mkdir rmdir touch clear history which/whereis 文件查看和编辑&#xff1a; cat less head tail vi 或 vim sz/rz echo 系统信息和管理&#xff1a; su uname hostname df free top ps ki…...

微软宣称其新工具可纠正人工智能幻觉 但专家依然对此表示怀疑

人工智能经常胡言乱语&#xff0c;微软现在说它有办法解决这个问题&#xff0c;但我们有理由对此持怀疑态度。微软今天发布了一项名为"更正"&#xff08;Correction&#xff09;的服务&#xff0c;它可以自动修改人工智能生成的与事实不符的文本。Correction 首先会标…...

实战OpenCV之图像滤波

基础入门 图像滤波是数字图像处理中一种非常重要的技术,主要用于图像噪声去除、图像平滑、突出图像特征,或者进行图像风格的转换。它通过数学运算对图像中的像素值进行修改,以达到特定的处理目的。图像滤波可以分为两大类,分别为:线性滤波、非线性滤波。 线性滤波器通过一…...

AI学习指南深度学习篇-Adadelta的Python实践

AI学习指南深度学习篇-Adadelta的Python实践 深度学习是人工智能领域的一个重要分支&#xff0c;近年来在各个领域都取得了显著的成就。在深度学习的模型训练中&#xff0c;优化算法起着至关重要的作用&#xff0c;其中Adadelta是一种常用的优化算法之一。本篇博客将使用Pytho…...

go webapi上传文件 部属到linux

go厉害的地方&#xff0c;linux服务器上无需安装任何依赖就可以运行&#xff0c;大赞&#xff01; 一、编译 #在Goland中cmd中执行 go env -w GOARCHamd64 go env -w GOOSlinux go build main.go # 切换回来 否则无法运行 go env -w GOOSwindows go run main.go 拷贝到linux服…...

接口加解密及数据加解密

目录 一、 加解密方式介绍 1.1 Hash算法加密 1.2. 对称加密 1.3 非对称加密 二、 我们要讲什么&#xff1f; 三、 接口加解密 四、 数据加解密 一、 加解密方式介绍 所有的加密方式我们可以分为三类&#xff1a;对称加密、非对称加密、Hash算法加密。 算法内部的具体实现…...

开创远程就可以监测宠物健康新篇章

在宠物健康监测的新纪元&#xff0c;智能听诊器凭借其先进技术&#xff0c;正逐步改变我们对宠物健康监护的传统认知。这不仅是一款监测工具&#xff0c;而是宠物健康管理的得力助手&#xff0c;为宠物主人和兽医提供前所未有的洞察力和便捷性。 深度学习算法&#xff1a;智能…...

二叉树的基本概念(上)

文章目录 &#x1f34a;自我介绍&#x1f34a;简介&#x1f34a;树的定义树中的专业术语树的分类 &#x1f34a;二叉树的特性讲解 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以&#xff1a;点赞关注评论收藏&#xff08;一键四连&#xff09;哦~ &#x1f34a;自我介…...

aws s3 存储桶 前端组件上传简单案例

写一个vue3 上传aws oss存储的案例 使用到的插件 npm install aws-sdk/client-s3 注意事项 &#xff1a; 1. 本地调试 &#xff0c; 需要设置在官网设置跨域 必须&#xff01;&#xff01;&#xff01; 否则调试不了 &#xff0c;前端代理是不起作用的 &#xff0c;因为是插…...

【开源免费】基于SpringBoot+Vue.JS墙绘产品展示交易平台(JAVA毕业设计)

本文项目编号 T 049 &#xff0c;文末自助获取源码 \color{red}{T049&#xff0c;文末自助获取源码} T049&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…...

python爬虫初体验(四)—— 百度文库PPT的爬取

文章目录 1. 安装包2. 相关代码3. 说明4. 注意事项5. 扩展功能5.1 多页面下载5.2 输入地址下载 在Python 2中编写一个爬虫来大量下载图片&#xff0c;可以使用requests库来发送HTTP请求&#xff0c;并使用BeautifulSoup来解析HTML页面。此外&#xff0c;可以使用urllib2库来下载…...

下水道内缺陷识别检测数据集 yolo数据集 共2300张

下水道内缺陷识别检测数据集 yolo数据集 共2300张 下水道内部缺陷识别数据集&#xff08;Sewer Interior Defect Recognition Dataset, SIDRD&#xff09; 摘要 SIDRD 是一个专门针对下水道内部缺陷识别的数据集&#xff0c;旨在为城市基础设施维护和管理提供一个标准化的训练…...

年轻用户对Facebook的使用趋势分析

在社交媒体的蓬勃发展中&#xff0c;Facebook作为全球最大的社交平台之一&#xff0c;尽管面临着来自新兴平台的竞争&#xff0c;仍然在年轻用户中扮演着重要角色。然而&#xff0c;年轻用户对Facebook的使用方式和趋势却在不断变化。本文将探讨年轻用户对Facebook的使用趋势&a…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

图解JavaScript原型:原型链及其分析 | JavaScript图解

​​ 忽略该图的细节&#xff08;如内存地址值没有用二进制&#xff09; 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么&#xff1a;保存在堆中一块区域&#xff0c;同时在栈中有一块区域保存其在堆中的地址&#xff08;也就是我们通常说的该变量指向谁&…...

qt 双缓冲案例对比

双缓冲 1.双缓冲原理 单缓冲&#xff1a;在paintEvent中直接绘制到屏幕&#xff0c;绘制过程被用户看到 双缓冲&#xff1a;先在redrawBuffer绘制到缓冲区&#xff0c;然后一次性显示完整结果 代码结构 单缓冲&#xff1a;所有绘制逻辑在paintEvent中 双缓冲&#xff1a;绘制…...

Flask和Django,你怎么选?

Flask 和 Django 是 Python 两大最流行的 Web 框架&#xff0c;但它们的设计哲学、目标和适用场景有显著区别。以下是详细的对比&#xff1a; 核心区别&#xff1a;哲学与定位 Django: 定位: "全栈式" Web 框架。奉行"开箱即用"的理念。 哲学: "包含…...