Linux下实现C语言程序

一.情况说明

     写这篇博客的情况比较复杂,首先我本来是参加新星计划按照规划现在去学习shell脚本语言的,但是博主现在由于其他原因需要了解makefile,makefile是Linux系统下的一种工具,makefile的一些背景要涉及链接库的知识,而链接库刚好在之前我简单的介绍过一些,只不过那个时候是在Windows下进行的,现在要学会在Linux下进行操作它,要操作它你就又不得不进行C语言编程,但是如果不了解Linux下的C语言编程,还是有一些麻烦,所以今天在这里从零开始详细介绍Linux中C语言环境的配置,以及C语言程序的运行过程。

      今天这篇的博客和链接库的关系不大,但是这篇是开始,到后面Linux下的链接库以及makefile了解都有一定的作用,这里大家可以去阅读一下。Windows下实现链接库

二.Linux下实现C语言过程

  • 安装C语言编译器

          在Linux系统上,您需要安装C语言编译器才能编译C语言程序。常见的编译器有GCC(GNU Compiler Collection)和Clang。

  • 编写C语言代码

使用任何文本编辑器(例如Vim、Emacs或Nano)创建一个新的源文件,并将其保存为(或其他名称)。

  •  编译源代码

在终端中,使用命令来编译源代码,产生可执行文件

  • 运行可执行文件

三.GCC编译器

1.了解GCC

        GCC是GNU Compiler Collection(GNU编译器集合)的缩写,它是一个由自由软件基金会开发的编译器系统。GCC可以编译多种编程语言,包括C、C++、Objective-C、Fortran、Ada和其他一些语言。GCC被广泛应用于开源软件开发、嵌入式系统和高性能计算等领域。

       GCC不仅是一个编译器,还提供了一组与编译器相关的工具和库,例如调试器、汇编器、链接器和运行时库等。GCC的一个重要特点是跨平台支持,它可以在多种操作系统上编译目标代码,包括Linux、Windows、macOS等。GCC使用GPL许可证,因此是免费软件,并且可以进行修改和重新分发。

2.Linux中的GCC

许多Linux的发行版(如Centos,Ubuntu等)都默认安装了GCC,但实际上Linux自带的GCC编译器版本太低了,推荐大家使用命令

gcc --version
正在上传…重新上传取消

查看自己虚拟机的GCC版本,如果你的版本太低,这边也建议更新哦。同时也有的Linux发行版没有自带GCC编译器,刚好我们一起安装。

3.安装前提

GCC对GMP、MPFR、MPC有依赖,因此先需要安装相对应的库。

四.GCC安装过程

一步安装到位:

yum -y install gcc

使用上述命令即可一步安装到位,但是它安装的默认是对应的Linux发行版默认的版本,不是最新版。

最新版的教程如下:

  • 1.安装依赖
yum -y install wget bzip2 gcc-c++
  • 2.安装目录
mkdir /opt/gcc && cd /opt/gcc
  • 3.安装包下载
wget http://ftp.gnu.org/gnu/gcc/gcc-12.2.0/gcc-12.2.0.tar.gz
注意:http://ftp.gnu.org/gnu/gcc获取最新版下载链接并替换
  • 4.安装包解压
tar -zxvf gcc-12.2.0.tar.gz && rm -rf gcc-12.2.0.tar.gz
  • 5.安装配置
cd /opt/gcc/gcc-12.2.0
./contrib/download_prerequisites
./configure --prefix=/opt/gcc/gcc-12.2.0 -disable-multilib
  • 6.编译安装
make -j16 && make install
注意:安装时间非常久,建议临时增加核心数量,-j16表示16个编译命令同时执行
  • 7.环境变量
echo "export GCC_HOME=/opt/gcc/gcc-12.2.0" >> /etc/profile
echo "export PATH=\$GCC_HOME/bin:\$PATH" >> /etc/profile
source /etc/profile
  • 8.卸载旧版本
yum -y remove gcc
  • 9.查看新版本
gcc -v
  • 10.更新动态库
查看旧动态库:strings /usr/lib64/libstdc++.so.6 | grep CXXABI
删除旧动态库:rm -f /usr/lib64/libstdc++.so.6
新动态库位置:/opt/gcc/gcc-12.2.0/lib64/libstdc++.so.6.X.XX
链接新动态库:ln -s /opt/gcc/gcc-12.2.0/lib64/libstdc++.so.6.0.30 /usr/lib64/libstdc++.so.6
查看新动态库:strings /usr/lib64/libstdc++.so.6 | grep CXXABI

此最新版教程来源于:GCC最新版安装

五.实现C语言程序

  • 1.建立一个.c文件
vim hello.c
  • 2.vim编辑器编辑

在文本输入你要编写的C语言程序内容,保存后退出

  • 3.编译源程序
gcc hello.c -o hello
  • 4.运行该可执行文件
./hello
  • 5.输出结果

 六.补充

         文章中的命令如果你有什么地方不懂,可以查看同系列Linux专栏的其他三篇文章,那是我最近参加新星计划系统学习的,详细介绍了Linux常用的命令和运维基础。

Linux运维基础1

Linux运维基础2

Linux运维基础3

        这次的文章是我之前零散的接触Linux时做的笔记,现在进行导入而已,有些基础。但是后面我要介绍Linux下的链接库和makefile就必须知道C语言在Linux下运行过程,核心是过程,操作很简单。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

css初入门:网页布局之网格布局-grid

文章目录 网格布局-grid1、设置网格布局2、网格布局介绍3、网格容器grid-template-columns属性grid-template-rows 属性justify-content 属性justify-items属性align-content 属性 4、网格项目grid-column-start、grid-column-start、grid-column属性grid-row-start、grid-row-…

4.2.2字符串KMP算法

对朴素模式匹配算法的优化: 当我们匹配最后一个字符才发现匹配失败。 那么前面这些字符一定是与模式串对应的。 通过模式串的部分匹配 朴素模式匹配算法优化思路: 不匹配的字符之前,一定是和模式串一致的。 可以跳过中间好几个没有必要的对比…

如何将项目提交到别人的仓库

大纲: 1、在gitee中克隆(clone)别人仓库的代码。 首先,进入别人的仓库,点击 克隆/下载 2、在你存放项目的文件夹下克隆你刚刚复制的代码 (右键点击Git Clone即可) 点击OK 就开始克隆了 克隆成功之后,文件上…

Maya英文界面怎么改为中文界面

Maya是一款3D动画和视觉效果软件,用于创建逼真的角色和大片般的效果,也是受到电影、电视和游戏行业的 3D 建模师、动画师、照明艺术家和 VFX 艺术家等多数人喜爱的一款3D软件。我们在使用Maya的过程中,常常会遇到一些小阻碍,比如M…

蓝牙耳机接打电话哪个比较好?接打电话最好的蓝牙耳机

技术已经发展到如此程度,耳机可以淹没嘈杂环境中不断出现的杂音,同时还能让我们在通话、音乐和娱乐方面保持清晰,既然如此,我们就来整理一下2023年适合通话和娱乐的无线耳机清单。 一、南卡小音舱Lite2蓝牙耳机 参考价格&#x…

基于Java+jquery+SpringMVC校园网站平台设计和实现

基于JavajquerySpringMVC校园网站平台设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文章目…

IDEA22.3.3的三个常用经常遇到的配置问题

1、期待效果:【打开iDEA的时候,让开发者选择需要打开的项目】 设置如下 2、期待效果:配置默认的Maven,避免每次新建项目后,都需要去修改Maven配置 同理,修改默认的java版本和自己本地java环境一致 3、新建…

【C++】哈希的应用——布隆过滤器

哈希的应用——布隆过滤器 文章目录 哈希的应用——布隆过滤器一、布隆过滤器的概念与性质1.布隆过滤器的引出2.布隆过滤器的概念3.布隆过滤器的误判4.布隆过滤器的应用场景5.布隆过滤器优缺点6.如何选择哈希函数个数和布隆过滤器长度 二、布隆过滤器的实现1.布隆过滤器基本框架…

【电动汽车充电站有序充电调度的分散式优化】基于蒙特卡诺和拉格朗日的电动汽车优化调度(分时电价调度)(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

IDEA 用上这款免费 GPT4 插件,生产力爆表了

早前给大家分享过GPT的一些玩法,今天再分享给一款 IDE 插件:Bito-ChatGPT ,安装就能直接在IDE中使用 GPT,就算是不会魔法,同样也能使用; 最重要是免费使用,速度也非常可观,今天分享…

看板与 Scrum:有什么区别?

看板和Scrum是项目管理方法论,以小增量完成项目任务并强调持续改进。但是他们用来实现这些目标的过程是不同的。看板以可视化任务和连续流程为中心,而Scrum更多是关于为每个交付周期实施时间表和分配设定角色。 在看板和Scrum之间做出选择并不总是必要…

2022年NOC大赛创客智慧编程赛道图形化scratch复赛题,包含答案解析

目录 2022 年 NOC 大赛创客智慧编程图形化复赛用题 下载文档打印做题:

SpringCache

一、介绍 Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能,大大简化我们在业务中操作缓存的代码。 Spring Cache只是提供了一层抽象,底层可以切换不同的cache实现。具体就…

面试2个月没有一个offer?阿里技术官的800页知识宝典打破你的僵局~

在经历了一波裁员浪潮后,大环境似乎有所好转,但对于面试者来说,面试愈发困难,现在面试官动不动就是底层原理,动不动就是源码分析,面试一定会抓你擅长的地方,一直问,问到你不会为止。…

深入理解Javascript事件处理机制

深入理解javascript事件处理机制 前言 在开发web应用程序时,事件处理机制是javascript中至关重要的一部分。许多高级特性,如事件冒泡、事件捕获和事件委托,都是通过事件处理来实现的。熟练掌握这些技术可以帮助我们更好地组织代码、提高代码…

pwlink用作USB转TTL,进入HC-05的AT模式

不说废话的文章概括: 直接连接PWLINK与HC-05,无法进入AT模式,因为蓝牙模块的VCC只能接5V,不能接3.3V,而且PWLINK有两个VDD引脚,且两个VDD引脚初始默认输出电压都是3.3V,所以需要将3.3V改为5V的…

Centos8编译安装内核

首先下载kernel,5.x版本的内核,下载地址: https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/ 系统安装相关包: # yum install -y bc gcc make python3 ncurses-devel flex bison openssl-devel elfutils-libelf-devel将内…

大数据数仓维度建模

目录 维度建模分为三种: 1、星型模型: 2、雪花模型: 3、星座模型: 模型的选择: 维度表和事实表: 维度表: 维度表特性 : 事实表: 事实表特性: 事务型…

2023年定向增发研究报告

第一章 行业概况 定向增发是增发的一种,是指上市公司向符合条件的少数特定投资者非公开发行股份的行为,有时也称“定向募集”或“私募”。定向增发的发行价格由参与增发的投资者竞价决定,发行程序与公开增发相比较为灵活。一般认为&#xff…

亿发软件:中大型仓库进出货管理系统解决方案,定制软件让仓储作业高效便捷

中大型仓库出入库管理是传统厂家供应链管理流程的重要部分,直接关乎货物在仓库当中存储的安全,和员工工作的效率。一旦仓库管理当中出现了疏漏,那么货物的信息数据就会发生变动,导致实际与账目不符。人工带来的低效与不可控是传统…