实验四:Linux系统C语言开发环境学习
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | 班级课程主页链接 |
| 这个作业的要求在哪里 | 作业要求 |
| 学号—姓名 | 17043133—木腾飞 |
| 作业学习要求 | 1.学习Linux系统中如何查看帮助文档; 2.在Linux系统中安装C语言编译器等开发工具(编辑器,编译器); 3.Linux系统下单个C语言文件编译链接过程(预处理,编译,汇编,链接,执行); 4.Linux系统下多个C语言文件编译链接(命令行方式,make方式) |
1.安装C语言开发环境
(1)安装C语言编译环境

(2)查看gcc版本信息

gcc简介:
GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。GNU编译器套件包括C、C++、Objective-C、Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如Livstdc++、libgc等)
(3)查看make版本信息

make介绍:
在Linux环境下GNU在make工具能够比较容易的构建一个属于自己的工程,整个工程的编译只需要一个命令就可以完成编译、链接以及执行。
make是一个命令工具,它解释Makefile中的命令(规则),在Makefile文件中描述了整个工程所有文件编译顺序,编译规则。
2.简单C语言练习
(1)首先通过man命令查看帮助文档


man命令简介:
Linux有一个很好的工具,就是man。它会按照系统设计帮助目录,在各个文档里面查询,并显示内容。
man命令:可以通过一些参数,快速查询Linux帮助手册,并格式化显示。
(2)命令模式简单C语言编译链接等操作
通过vim编辑器写一个简单的C语言程序,如写一个输出自己学号的程序。
先创建一个文件夹,然后进入该新创建的文件夹。


输入完了源程序,接下来进行C语言编译的四个阶段:
a)预编译:预处编译段将根据已放置在文件中的预处理命令来修改源文件内容。(在正式的编译阶段之前)
b)编译:源代码优化,生成汇编代码,生成.s文件。
c)汇编:根据汇编指令和特定平台,把汇编指令翻译成二进制形式,合并个section,合并符号表,生成.o文件。
d)链接:地址和空间的分配,符号决议和重定位,生成可执行文件。
a)预编译


gcc -E #仅执行编译预处理
gcc -O #指定生成的输出文件及文件名
b)编译

gcc -S #生成汇编源文件
cat test.s #显示如下

vim test.s #显示如下

c)汇编

gcc -c #编译源码生成最后目标文件

d)链接


e)运行

r:read就是读权限
w:write就是写权限
x:excute就是执行权限
3)多文件编译
在exp4文件夹下创建一个文件夹mfc(multi-files compile),在文件夹下创建五个文件,文件名如下:





每个文件的内容分别如下:
(1)main.c

(2)my1.h

(3)my1.c

(4)my2.h

(5)my2.c

完成上面的代码输入,接下来我们进行编译。
对于多个文件编译,我们可以一次编译链接生产可执行文件,也可以分别编译每个C文件,再进行链接得到可执行文件。


请说明这两种方法的区别?
第一种方法:一次编译链接直接生成可执行文件,不产生目标文件;
第二种方法:非别对每个C文件进行编译产生目标文件,之后再进行链接得到可执行文件。
接下来我们编写有一个简单的Makefile,通过make工具帮助我们进行编译。
在当前文件夹编写一个Makefile文件


Makefile简介:
Makefile带来了直接好处就是—"自动化编译"。
文件一旦写好,只需要make命令,整个工程完全自动编译,十分便捷.
而Makefile文件就是告诉make命令怎样去编译和链接程序。
实验四:Linux系统C语言开发环境学习的更多相关文章
- 实验四 Linux系统C语言开发环境学习
项目 内容 这个作业属于哪个课程 Linux系统与应用 这个作业的要求在哪里 作业要求链接 学号-姓名 17041428-朱槐健 作业学习目标 1.Linux系统下C语言开发环境搭建 2.学习Linu ...
- Linux系统c语言开发环境
项目 内容 这个作业属于哪个课程 班级地址 这个作业要求在哪里 作业要求地址 学号-姓名 17041506-张政 学习目标 Linux系统下C语言开发环境搭建,学习Linux系统环境C语言开发过程 L ...
- 实验四 Linux系统搭建C语言编程环境
项目 内容 这个作业属于那个课程 <班级课程的主页链接> 这个作业的要求在哪里 <作业要求链接地址> 学号-姓名 17043220-万文文 作业学习目标 1).Linux系统下 ...
- Windows10下配置Linux下C语言开发环境
今天为大家介绍如在Windows10下配置Linux下C语言开发环境,首先安装linux子系统:启用开发者模式 1.打开设置 2.点击更新和安全3.点击开发者选项 4.启用开发人员模式 5.更改系统功 ...
- 实验一 Linux基础与Java开发环境
实验一 (一)实验内容 基于命令行和IDE(Intellj IDEA 简易教程http://www.cnblogs.com/rocedu/p/4421202.html)进行简单的Java程序编辑.编译 ...
- 20162312 实验一 Linux基础与Java开发环境
实 验 报 告 课程:程序设计与数据结构 姓名:张家铖 班级:1623 学号:20162312 实验名称: Linux基础与Java开发环境 实验器材:msi GL62M 7RD 实验目的与要求:1. ...
- linux + eclipse C语言 开发环境搭建
经常与linux系统打交道,了解学习一下C语言,下载eclipse c/c++ linux版,直接在虚拟机linux系统上安装http://www.eclipse.org/downloads/pack ...
- linux 系统下java开发环境的配置
在安装之前,确保你的linux系统下有 jdk,jboss等相关软件 一.配置JDK环境变量 步骤: 解压缩JDK文件: unzip jdk1.6.0_31.zip 目录下显示文件夹jdk1.6.0_ ...
- Linux系统下Java开发环境的配置(未完...)
1.查看jdk版本 java -version 2.将下载好的jdk放在/usr/lib/jvm里(其中jvm是自己起的名) sudo mv jdk1.8.0_111 /usr/lib/jvm ...
随机推荐
- 2019 ICPC 银川网络赛 H. Fight Against Monsters
It is my great honour to introduce myself to you here. My name is Aloysius Benjy Cobweb Dartagnan Eg ...
- SpringBoot集成Quartz实现定时任务
1 需求 在我的前后端分离的实验室管理项目中,有一个功能是学生状态统计.我的设计是按天统计每种状态的比例.为了便于计算,在每天0点,系统需要将学生的状态重置,并插入一条数据作为一天的开始状态.另外,考 ...
- opencv-12-高斯滤波-双边滤波(附C++代码实现)
开始之前 这几天由于自己的原因没有写, 一个是因为自己懒了, 一个是感觉这里遇到点问题不想往下写了, 我们先努力结束这个章节吧, 之前介绍了比较常用而且比较好理解的均值和中值滤波, 但是呢,在例程Sm ...
- 真正免费,不限页数的PDF转Word工具
真正免费,不限页数的PDF转Word工具 我们知道PDF转Word工具非常多,但大部分都有各种限制,限大小,限页数,加水印等等. 这其中绝大部分其实并不能做到格式完全一样,遇到图片更是直接傻了. 我们 ...
- SpringBoot 整合SpringBatch实际项目改造
SpringBoot整合SpringBatch项目,已将代码开源至github,访问地址:https://github.com/cmlbeliever/SpringBatch 欢迎star or fo ...
- 工作总结1-----String.format的使用
以前在开发项目中,输入信息常使用的方法:"XXXXXXX"+a+"XXXXXXXXXXX"+b;,这种方式不仅不美观而且不易维护! String中的format ...
- 容器技术之LXC
什么是容器?在生活中我们常见的容器有各种瓶瓶罐罐.各种能够容纳其它物料的东西叫容器:容器的特点就是有着很好的隔离作用,使得不同的物料互相隔离:除此之外容器还方便运输.方便储存:这是生活中所说的容器,以 ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来
上一篇文章(https://www.cnblogs.com/meowv/p/12896177.html)已经成功创建了博客项目,但是abp默认给我们引用了许多项目中用不到的组件. 本篇文章将给项目进行 ...
- 【Django组件】KindEditor富文本编辑器上传文件,html样式文本,VUE异步提交数据(易懂版)
1:下载与配置 适合版本: python3 下载:http://kindeditor.net/down.php 文档:http://kindeditor.net/doc.php 将文件包放入stati ...
- 让写作省心一点——Markdown和CSS实践
1 引言 今天这篇推送和以往不太一样,乍一看就能发现格式有了变化.没错,这是我专门设计的品牌模板,也就是本公众号以后创作的文章可直接套用,获得一致的风格样式. 除此以外,文章里的全部元素(包括标题.表 ...