实验四 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. 程序库 ...
随机推荐
- day01:判断与循环(20170213)
#1测试判断用户与密码是否正确:import getpassusername = "llz"password = "123455"_username = inp ...
- vue + typescript,定义全局变量或者方法
众所周知,在 vue中,如果想定义一个全局变量的方法很简单,直接在 vue的原型上挂载属性或者方法即可. 但是,加上了typescript之后, Vue.prototype.$xxx = xxx 这 ...
- B. Sleepy Game 博弈搜索
题意:给一个有向图和起点,然后只有一名选手,这名选手可以随意挪动棋子,最终不能动的时候走过的边为奇数边为Win并输出路径,否则如果有环输出Draw,否则输出Lose; 题目链接 知道状态数最多只有n* ...
- go语言依赖注入实现
最近做项目中,生成对象还是使用比较原始的New和简单工厂的方式,使用过程中感觉不太爽快(依赖紧密,有点改动就比较麻烦),还是比较喜欢使用依赖注入的方式. 然后网上没有找到比较好用的依赖注入包,就自己动 ...
- 001_C语言中运算符的优先级
总的来说就是: 1. 最高:单目运算符(() > * 解引用,&取地址,-取相反数,++等自增(或减)运算,!取反运算...); 2. 次之:双目运算符(算数运算符 > 移位运算符 ...
- pytest跳过指定的测试或模块
参考Allure官方文档,pytest官方文档 实现setup/teardown 1.运行带指定标记的测试 @pytest.mark.tags ,这里的tags可以自定义 命令行执行:pytest - ...
- ATX-UI自动化环境搭建
基础环境准备(以下都是在Mac机上搭建的) 1.android sdk安装&配置 很完美的一个资源下载网:tools.android-studio.org,下载所需的包(我下的zip包直接解压 ...
- PowerDesigner使用教程(一)
一.PowerDesigner简介 PowerDesigner是一款功能非常强大的建模工具软件,足以与Rose比肩,同样是当今最著名的建模软件之一.Rose是专攻UML对象模型的建模工具,之后才向数据 ...
- IT笑话十则(一)
一.下班前发给你 客户:“这个图下班之前必须发给我!” 设计师:“好的!” 第二天清早. 客户:“图怎么还没发过来?” 设计师:“我还没下班呢…” 二.受伤的老三 行业老大与老二PK,受伤的并非对 ...
- java内部类简单用法
package innerClass; /** * 特点 * 1:增强封装性,通过把内部类隐藏在外部类的里面,使得其他类不能访问外部类. * 2:增强可维护性. * 3:内部类可以访问外部的成员. * ...