【Linux】centos7编写C语言程序,补充:使用yum安装软件包组

确保已安装gcc编译器

C语言程序,一般使用gcc进行编译,需确保已安装gcc。

若没有,可以使用yum安装gcc(版本4.8.5),也可以使用SCL源安装gcc(例如:版本9.3)。

安装gcc(版本9.3)参考:centos7升级gcc(版本9.3)

# 查看gcc版本
gcc --version

安装vim编辑器

centos7默认编辑器是vi。但,vim基于vi,且功能更多(例如:代码高亮),一般使用vim编辑器。

使用vim,需先安装。

# 查看yum仓库中关于vim的软件包
yum list vim*# 安装vim
yum install vim -y


使用命令行编写C语言程序:

(1)打开 并 编辑 C语言源代码文件。
  • C语言源代码文件:文件名以 .c 结尾。
  • C程序中包含的头文件:文件名以 .h 结尾。

使用vi/vim打开C语言源代码文件,若没有该文件,则会创建。

# vi/vim打开C语言源代码文件(没有则会创建文件)
vim hello.c

在hello.c中写一段简单的C语言代码:输出hello, centos7。

#include <stdio.h>

int main(void)
{
    printf("hello, centos7\n");
}

(2)编译链接。
# 编译链接(从.c源代码文件到可执行文件)
gcc -o hello hello.c

补充:具体编译链接过程:(以源代码hello.c举例)

① 预处理:

  • C语言源代码文件(.c)--> 预处理后的C语言源代码文件(.i ) 。
  • 删除注释,处理头文件、宏定义等。
  • 命令:gcc -E hello.c -o hello.i

② 编译:

  • 预处理后的C语言源代码文件(.i )--> 汇编语言文件(.s)。
  • C语言转为汇编语言。通过语义、语法等解析,优化,汇总符号等。
  • 命令:gcc -S hello.i -o hello.s

③ 汇编:

  • 汇编语言文件(.s)--> 中间目标文件(.o)
  • 汇编语言转为二进制。生成段表、符号表等。
  • 命令:gcc -c hello.s -o hello.o

④ 链接:

  • 中间目标文件(.o)--> 可执行文件。
  • 通过与各种相关的库函数链接,合并各个段表、符号表,符号表重定位等。
  • 命令:gcc hello.o -o hello

(3)执行可执行文件。
# 执行可执行文件
./hello


补充:

1、C语言常用工具

(1)gdb:C语言常用的命令行调试工具。

(2)valgrind:C语言常用的检测内存、分析性能的调试工具。

(3)clang:C语言轻量级编译器。其目标之一是超越gcc。

2、centos7使用yum安装软件包组

可以使用yum安装软件包组"Development Tools",里面包含gcc,gcc-c++,make,git等。

参考:如何在 CentOS 和 RHEL 上使用 Yum 安装软件包组

# 查看可以使用yum安装的所有软件包组(也可以yum grouplist)
yum groups list# 查看软件包组"Developments Tools"的信息
yum groups info 'Developments Tools'# 安装软件包组"Developments Tools"
yum groups install 'Developments Tools'

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/19172.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024.05.29学习记录

1、css面经复习 2、代码随想录二刷 3、rosebush upload组件初步完成

Linux网络编程: udp,tcp协议原理

Linux网络编程: udp,tcp协议原理 一.udp和tcp的介绍1.udp介绍1.udp的特点2.udp的适用场景3.udp效率分析 2.tcp介绍1.tcp的特点2.tcp的适用场景 二.udp协议原理1.udp协议段格式2.udp的缓冲区和全双工通信 三.tcp协议段1.tcp协议段格式2.发送接收缓冲区3.确认应答ACK机制,窗口大小…

Rosetta PyRosetta 源码包 安装包 下载

--- pyrosetta_src.zip包含以下包&#xff1a; | --- PyRosetta4.Debug.python27.ubuntu.release-185.tar.bz2 | --- PyRosetta4.Release.python27.linux.release-215.tar.bz2 | --- PyRosetta4.Release.python38.ubuntu.release-349.tar.bz2 --- pyrosetta_whl.zip包含…

C语言---文件操作

【C语言详解】——文件操作&#xff08;建议收藏&#xff09;_c语言 写文件原理-CSDN博客 一、文件的读取 # define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<errno.h> #include<string.h>int main() {FILE * pffopen("C:\\Users\\zhw\\De…

Java设计模式 _行为型模式_观察者模式

一、观察者模式 1、观察者模式 观察者模式 ( Observer Pattern )是一种行为型模式。 常用于对象间存在一对多关系时&#xff0c;比如&#xff0c;当一个对象被修改时&#xff0c;需要自动通知它的依赖对象。 2、实现思路 &#xff08;1&#xff09;、定义被观察者的行为&…

Python Selenium 详解:实现高效的UI自动化测试

落日余辉&#xff0c;深情不及久伴。大家好&#xff0c;在当今软件开发的世界中&#xff0c;自动化测试已经成为保障软件质量和快速迭代的重要环节。而在自动化测试的领域中&#xff0c;UI自动化测试是不可或缺的一部分&#xff0c;它可以帮助测试团队快速验证用户界面的正确性…

Django学习

1.pycharm社区版创建django PyCharm社区版如何创建Django项目并运行_pycharm社区版打开django-CSDN博客 2.Django TemplateDoesNotExist: rest_framework 当我们使用djangorestframework框架时&#xff0c;首先下载pip install djangorestframework 参考博文Django Templat…

Windows环境编译zlib库

zlib 是一个用来进行数据压缩的开源软件库,由 Jean-loup Gailly 和 Mark Adler 编写。它提供了对 DEFLATE 压缩算法的支持,这种算法广泛用于 gzip 和 PNG 文件格式。 官网地址:链接 本文将使用VS2022+Cmake编译zlib库,操作系统为Windows10,编译好的动态库及静态库见文末链…

MATLAB分类与判别模型算法: 快速近邻法(FastNN)分类程序【含Matlab源码 MX_005期】

算法思路介绍&#xff1a; 1. 数据准备阶段&#xff1a; 生成一个合成数据集 X&#xff0c;其中包含三个簇&#xff0c;每个簇分布在不同的区域。 定义聚类层数 L 和每个层次的子集数量 l。 2. 聚类阶段&#xff1a; 使用K均值聚类算法将初始数据集 X 分成 l 个簇。…

transformers.BertTokenizer入门使用

教程link 示例代码 from transformers import OpenAIGPTLMHeadModel, GPT2LMHeadModel, BertTokenizer import torch tokenizer BertTokenizer.from_pretrained("thu-coai/CDial-GPT_LCCC-large") model OpenAIGPTLMHeadModel.from_pretrained("thu-coai/CD…

Marin说PCB之如何在主板上补偿链路中的走线的等长误差?

一场雨把我困在这里&#xff0c;你冷漠地看我没有穿雨衣淋成落汤鸡。今天刚刚出门时候看天气预报没有雨&#xff0c;于是我就没有带雨衣骑电动车去公司了&#xff0c;谁知道回来的路上被淋成狗了。天气预报就像是女人的脾气那样&#xff0c;不能完全相信的。 好了&#xff0c;我…

编译安装MySQL服务(LAMP2)

目录 1.初始化设置&#xff0c;将安装mysql 所需软件包传到/opt目录下 &#xff08;1&#xff09;关闭防火墙 &#xff08;2&#xff09;上传软件包到/opt目录 2.安装环境依赖包 3.配置软件模块 4.编译及安装 5.创建mysql用户 6.修改mysql 配置文件 7.更改mysql安装目…

JavaScript-JavaWeb

目录 什么是JavaScript? js引入方式 js基础语法 书写语法 变量 数据据类型 运算符 类型转换 流程语句 js函数 js对象 1.Array 2.String 3.JSON js事件监听 什么是JavaScript? ● JavaScript(简称:JS)是一门跨平台、面向对象的脚本语言。是用来控制网页行为的,它能…

2024了,还有人在问为甚死锁?

大家好&#xff0c;我是javapub。 接上篇提到了锁&#xff0c;《InnoDB有哪些锁类型》。这么多的锁&#xff0c;你有遇到过死锁吗&#xff1f; 死锁是在事务数据库中会发生的一种特殊现象&#xff0c;多个事务在执行过程中&#xff0c;相互等待对方持有的资源&#xff0c;导致…

Windows驱动开发系列文章一

文章目录 环境搭建如何调试实时调试非实时调试 环境搭建 基本上按照官方网站安装 VisualStudio/SDK/WDK 这些软件就可以了 详情请参考这个安装链接 如何调试 Windows 调试分为两种&#xff1a;一种是实时调试&#xff0c;一种是非实时调试 实时调试 这个就需要用到Microso…

Flutter 中的 TweenAnimationBuilder 小部件:全面指南

Flutter 中的 TweenAnimationBuilder 小部件&#xff1a;全面指南 在Flutter中&#xff0c;动画是为应用增添活力和吸引力的重要方式。TweenAnimationBuilder是一个功能强大的动画组件&#xff0c;它允许开发者创建基于插值器&#xff08;tween&#xff09;的动画效果。这意味…

Docker-一文详解容器通信的基础网络模式及衍生的自定义网络模式

启动容器时&#xff0c;通过-p 宿主机端口:容器端口&#xff0c;就可以通过访问宿主机端口访问到容器&#xff0c;这种原理机制是啥&#xff0c;有没有其它方式可以让宿主机和容器通信&#xff0c;以及容器与容器之间如何通信。带着这几个问题开始学习Docker的网络知识。 文章…

【Linux】初识Linux和Linux环境配置

1.什么是Linux操作系统 说到电脑系统 我想有大多数人会脱口而出&#xff1a;windows、mac 是的&#xff0c;这也是如今市场上主流的两种操作系统。 但是对于IT相关的人士来说&#xff0c;还有一种系统也是必须有姓名 那就是Linux Linux&#xff0c;Linux Is Not UniX 的…

PV PVC

默写 1 如何将pod创建在指定的Node节点上 node亲和、pod亲和、pod反亲和: 调度策略 匹配标签 操作符 nodeAffinity 主机 In,NotIn,Exists,DoesNotExist&#xff0c;Gt&#xff0c;Lt podAffinity …

代码随想录-Day23

669. 修剪二叉搜索树 方法一&#xff1a;递归 class Solution {public TreeNode trimBST(TreeNode root, int low, int high) {if (root null) {return null;}if (root.val < low) {return trimBST(root.right, low, high);} else if (root.val > high) {return trimBS…