Linux下实现C语言程序

简介: 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.安装目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

五.实现C语言程序

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

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

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

六.补充

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


Linux运维基础1


Linux运维基础2


Linux运维基础3


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


相关文章
|
1月前
|
存储 自然语言处理 编译器
【C语言】编译与链接:深入理解程序构建过程
【C语言】编译与链接:深入理解程序构建过程
|
2月前
|
安全 Linux Shell
Linux上执行内存中的脚本和程序
【9月更文挑战第3天】在 Linux 系统中,可以通过多种方式执行内存中的脚本和程序:一是使用 `eval` 命令直接执行内存中的脚本内容;二是利用管道将脚本内容传递给 `bash` 解释器执行;三是将编译好的程序复制到 `/dev/shm` 并执行。这些方法虽便捷,但也需谨慎操作以避免安全风险。
179 6
|
3月前
|
网络协议 Linux
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
638 2
|
3月前
|
Linux Python
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
67 2
|
3月前
|
存储 算法 C语言
"揭秘C语言中的王者之树——红黑树:一场数据结构与算法的华丽舞蹈,让你的程序效率飙升,直击性能巅峰!"
【8月更文挑战第20天】红黑树是自平衡二叉查找树,通过旋转和重着色保持平衡,确保高效执行插入、删除和查找操作,时间复杂度为O(log n)。本文介绍红黑树的基本属性、存储结构及其C语言实现。红黑树遵循五项基本规则以保持平衡状态。在C语言中,节点包含数据、颜色、父节点和子节点指针。文章提供了一个示例代码框架,用于创建节点、插入节点并执行必要的修复操作以维护红黑树的特性。
102 1
|
3月前
|
编译器 C语言 计算机视觉
C语言实现的图像处理程序
C语言实现的图像处理程序
149 0
|
1月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
36 1
|
2月前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
42 5
|
1月前
|
存储 文件存储 C语言
深入C语言:文件操作实现局外影响程序
深入C语言:文件操作实现局外影响程序
|
2月前
|
存储 编译器 程序员
C语言程序的基本结构
C语言程序的基本结构包括:1)预处理指令,如 `#include` 和 `#define`;2)主函数 `main()`,程序从这里开始执行;3)函数声明与定义,执行特定任务的代码块;4)变量声明与初始化,用于存储数据;5)语句和表达式,构成程序基本执行单位;6)注释,解释代码功能。示例代码展示了这些组成部分的应用。
95 10