实验四 Linux系统搭建C语言编程环境
| 项目 | 内容 |
|---|---|
| 这个作业属于那个课程 | <班级课程的主页链接> |
| 这个作业的要求在哪里 | <作业要求链接地址> |
| 学号-姓名 | 17043220-万文文 |
| 作业学习目标 | 1)、Linux系统下C语言开发环境搭建; 2)、学习Linux系统环境C语言开发过程 |
实验内容
1.安装C语言开发环境

sudo apt install build-essential
查看gcc版本信息
gcc -v
查看make版本信息
make -v
2.简单C语言练习
1)首先我们通过man命令查看帮助文档
man gcc
2)命令行模式简单C语言编译链接等操作
我们可以通过vim编辑器编写一个最简单的C语言程序,如写一个输出自己学号的程序。先创建一个文件夹,然后进入该新创建的文件夹。


我们输入完了源程序,接下来我们进行C语言程序编译的四个阶段,预编译,编译,汇编,链接
a) 预编译
我们可以用vim打开test.i文件来查看文件内容,也可以用命令来查看
如下位test.i文件内容
b)编译

因为预编译和编译得到的文件都是文本文件,所以我们可以用vim打开查看文件内容。
c) 汇编
这里生成的不是文本文件了,是二进制文件,我们可以通过objdump命令来反汇编该文件来分析文件内容
d)链接
可执行文件是二进制文件,同样需要用objdump命令来反汇编该文件分析文件内容
objdump -d test
当输入命令:vim test.o显示反汇编内容时,其内容如下。可发现出现许多乱码
e)运行
3)多文件编译
我们在exp4文件夹下面再建一个文件夹mfc(multi-files compile)
在该文件夹下面创建5个文件,文件名分别如下:

每个文件的内容分别如下:




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

请说明两种方法的区别?
答:1)、多文件编译,一次编译链接就可直接生成可执行文件;2)、单文件编译,先对每个C文件进行编译,之后再进行链接得到可执行文件
接下来我们编写一个简单的Makefile,通过make工具帮助我们进行编译。在当前文件夹编写一个Makefile文件

注意这里每个gcc以及最后的rm前面都是有一个tab
现在我们可以直接在终端输入make就可以进行编译链接操作
实验四 Linux系统搭建C语言编程环境的更多相关文章
- 实验四 Linux系统C语言开发环境学习
项目 内容 这个作业属于哪个课程 Linux系统与应用 这个作业的要求在哪里 作业要求链接 学号-姓名 17041428-朱槐健 作业学习目标 1.Linux系统下C语言开发环境搭建 2.学习Linu ...
- Linux下搭建C/C++编程环境
Linux下搭建C/C++编程环境 1.KDevelop下载 wget -O KDevelop.AppImage https://download.kde.org/stable/kdevelop/5. ...
- Linux操作系统配置Go语言编程环境
之前一直在windows下写Go,现在工作环境切换至Linux下,因此写下此文,记录安装Go环境的过程. 操作系统:CentOS7.5 一.安装步骤 1,下载Go语言安装包 yum install g ...
- 实验 1 Linux 系统的安装和常用命令
实验 1 Linux 系统的安装和常用命令 (题目) 一.实验目的 (1)掌握 Linux 虚拟机的安装方法.Spark 和 Hadoop 等大数据软件在 Linux 操作系统 上运行可以发挥最佳性能 ...
- linux 操作系统下c语言编程入门
2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 ...
- Linux下的C语言编程
一.在Linux下的C语言编程所需工具(下面所列举的都是我编程所用的工具) 1.文本编辑器 Vim 2.编译链接工具 gcc 3.调试器 gdb 4.项目管理工具 make和makefile 二.VI ...
- Linux平台搭建-----C语言
下面内容是新手上路,各位高手路过勿喷!因为我第一次发布,可能页面设置或者其他做的不好,还请见谅~该文章只是作为我学习C语言的笔记以及记录学习进程的. 零基础学习C语言---搭建Linux平台开发环境 ...
- 实验一 Linux系统与应用准备
实验一 Linux系统与应用准备 项目 内容 作业归属 班级课程 作业要求 课程作业要求 学号-姓名 17041419-刘金林 作业学习目标 1.学习博客园软件开发者学习社区使用技巧和经验:2.学习M ...
- [转] linux操作系统下c语言编程入门--基础知识
点击阅读原文 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将会学到以下内容: 1. 源程序编译 2. Makefile的编写 3. 程序库 ...
随机推荐
- Java—线程的生命周期及线程控制方法详解
线程生命周期5种状态 介绍 线程的生命周期经过新建(New).就绪(Runnable).运行(Running).阻塞(Bolocked)和死亡(Dead) 状态转换图 新建(New) 程序使用 ...
- mybatis多对一与一对多
步骤: 1.创建maven项目 2.编写工具类 3.编写实体类 4.编写mapper接口 5.配置xml 6.测试 多对一:多个学生关联一个老师 工具类: //sqlSessionFactory -- ...
- tableView reloadData页面跳动问题
参考:https://www.jianshu.com/p/5f033fdd4ddb 一般情况下 if (@available(iOS 11.0, *)) { self.estimatedRowHeig ...
- poj3613 求经过n条边的最短路 ----矩阵玩出新高度 。
For their physical fitness program, N (2 ≤ N ≤ 1,000,000) cows have decided to run a relay race usin ...
- Android gradle 自定义插件
Gradle 的插件有三种打包方式: 构建脚本:插件逻辑写在 build.gradle 中,适用于逻辑简单的任务,但是该方式实现的插件在该构建脚本之外是不可见的,只能用于当前脚本. buildSrc项 ...
- Vue基础:子组件抽取与父子组件通信
在工作中承担一部分前端工作,主要使用Vue + Element UI. 随着版本迭代,需求增加,页面往往变得更加臃肿,不易维护.学习子组件的封装和抽取,能更好适应需求. 为什么需要子组件 可复用 将重 ...
- android自动化
1.环境安装 JDK 1.8 Appium Android_SDK python https://www.cnblogs.com/xiaohanzi/p/10676720.html https://b ...
- [Python基础]008.异常
异常 异常处理 捕获异常 抛出异常 自定义异常 一些常见的异常 异常处理 捕获异常 try/except 与C,java等语言用try/catch来捕获异常相似,Python使用try/except ...
- 【转】网页的title左边的小图片怎么添加
首先,代码中的title标签里是不能加图片的.但是浏览器标提栏前面是可以加一个小图标的. 解决方案:第一步,做一个16 X 16像素的ico格式的图标.具体操作方法是,先在Photoshop中做一个透 ...
- 一次FGC导致CPU飙高的排查过程
今天测试团队反馈说,服务A的响应很慢,我在想,测试环境也会慢?于是我自己用postman请求了一下接口,真的很慢,竟然要2s左右,正常就50ms左右的. 于是去测试服务器看了一下,发现服务器负载很高, ...