实验四: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 ...
随机推荐
- CodeForces - 1176A Divide it! (模拟+分类处理)
You are given an integer nn. You can perform any of the following operations with this number an arb ...
- C++类学习(2)
Ⅰ:类概念 一:类的构成 class 类名 { public: 公有数据成员和成员函数:类的接口 protected: 保护数据成员和成员函数: private: 私有数据成员和成员函数: }://注 ...
- ACM-ICPC 2019 山东省省赛 A Calandar
这个题,呃完全的送分题,签到题,一周只有五天,一年12个月,一个月30天,公式为((year1-year2)*360%5+(month1-month2)*30%5+day1-day2+初始星期)%5, ...
- python(random 模块)
一.Random 模块 注意:random() 是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法. 1.random.random() 返回随机生成的一个 ...
- vue 搭建框架到安装插件依赖,Element、axios、qs等
一.使用vue 单页面开发,首先要安装好本地环境 步骤如下: 1 下载nodejs 安装 (此时npm 和 node环境都已经装好)2 安装淘宝镜像 npm install -g cnpm --reg ...
- C语言程序报告五
C程序设计实验报告 姓 名:赖瑾 实验地点:家 实验时间: 2020年4月21日 实验项目:6.3.1练习1 编写由三角形三边求面积的函数 6.3.1练习2 编写求N阶乘的函数 6.3.1练习3 求两 ...
- Oracle的三种循环
一.loop循环 语法:声明循环变量loop判断循环条件 ,如果循环条件不成立,跳出循环if 条件表达式 thenexit;end if;语句块;改变循环变量的值end loop; 举例:输出1到10 ...
- Spring Boot 整合Web 层技术(整合Servlet)
1 整合Servlet 方式一1.1通过注解扫描完成Servlet 组件的注册 1.1.1创建Servlet /*** 整合Servlet 方式一*/@WebServlet(name = & ...
- lambda表达式入门详解
转自 2018-03-02 Sevenvidia 码农翻身 1.什么是Lambda? 我们知道,对于一个Java变量,我们可以赋给其一个"值". 如果你想把"一块代码 ...
- LeetCode--LinkedList--21.Merge Two Sorted Lists (Easy)
21. Merge Two Sorted Lists (Easy) Merge two sorted linked lists and return it as a new list. The new ...