项目 内容
这个作业属于那个课程 <班级课程的主页链接>
这个作业的要求在哪里 <作业要求链接地址>
学号-姓名 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语言编程环境的更多相关文章

  1. 实验四 Linux系统C语言开发环境学习

    项目 内容 这个作业属于哪个课程 Linux系统与应用 这个作业的要求在哪里 作业要求链接 学号-姓名 17041428-朱槐健 作业学习目标 1.Linux系统下C语言开发环境搭建 2.学习Linu ...

  2. Linux下搭建C/C++编程环境

    Linux下搭建C/C++编程环境 1.KDevelop下载 wget -O KDevelop.AppImage https://download.kde.org/stable/kdevelop/5. ...

  3. Linux操作系统配置Go语言编程环境

    之前一直在windows下写Go,现在工作环境切换至Linux下,因此写下此文,记录安装Go环境的过程. 操作系统:CentOS7.5 一.安装步骤 1,下载Go语言安装包 yum install g ...

  4. 实验 1 Linux 系统的安装和常用命令

    实验 1 Linux 系统的安装和常用命令 (题目) 一.实验目的 (1)掌握 Linux 虚拟机的安装方法.Spark 和 Hadoop 等大数据软件在 Linux 操作系统 上运行可以发挥最佳性能 ...

  5. linux 操作系统下c语言编程入门

    2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理  ...

  6. Linux下的C语言编程

    一.在Linux下的C语言编程所需工具(下面所列举的都是我编程所用的工具) 1.文本编辑器 Vim 2.编译链接工具 gcc 3.调试器 gdb 4.项目管理工具 make和makefile 二.VI ...

  7. Linux平台搭建-----C语言

    下面内容是新手上路,各位高手路过勿喷!因为我第一次发布,可能页面设置或者其他做的不好,还请见谅~该文章只是作为我学习C语言的笔记以及记录学习进程的. 零基础学习C语言---搭建Linux平台开发环境 ...

  8. 实验一 Linux系统与应用准备

    实验一 Linux系统与应用准备 项目 内容 作业归属 班级课程 作业要求 课程作业要求 学号-姓名 17041419-刘金林 作业学习目标 1.学习博客园软件开发者学习社区使用技巧和经验:2.学习M ...

  9. [转] linux操作系统下c语言编程入门--基础知识

    点击阅读原文 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将会学到以下内容: 1. 源程序编译        2. Makefile的编写        3. 程序库 ...

随机推荐

  1. 【雕爷学编程】Arduino动手做(61)---电压检测传感器

    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的.鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为 ...

  2. .net core 3.1 使用nlog记录日志 NLog.Web.AspNetCore

    背景 .net core 中已经集成了log的方法, 但是只能控制台输出不能写入文件等等. 常见第三方的的日志工具包括log4net, nlog等等, 本文介绍nlog 一. 引用程序集, nuget ...

  3. flask之session

    ''' session使用: session创建: (1)导入session from flask import session (2)设置secret_key密钥 app.secret_key='s ...

  4. k8s搭建实操记录干货二(node)

    #注:172.16.110.111为master,172.16.110.112\114为node1\node2(kubeadm join部分要等master完成后手工操作,其它可执行本脚本一键安装) ...

  5. eclipse的Android一些问题

    我最近在学习Android 用eclipse来写Android项目 一开始就遇到了许多的坑——但好在有老师们帮助.还有百度: 现在我开始总结: 1.安装eclipse,这个暂时不说,因为我还没遇到什么 ...

  6. 201771010128 王玉兰《面象对象程序设计(Java)》第六周学习总结

    第一部分:基础知识总结: 1.继承 A:用已有类来构建新类的一种机制,当定义了一个新类继承一个类时,这个新类就继承了这个类的方法和域以适应新的情况: B:特点:具有层次结构.子类继承父类的方法和域: ...

  7. hdu5967数学找规律+逆元

    Detachment Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  8. 博客管理与文章发布系统-第三方模块及其用法Part1

    写个帖子记录一下自己写的第一个express完整项目. 所需第三方模块及其用法. 一.先把所需文件和准备工作写一下 写项目前的准备 1.创建所需文件夹 public 静态资源 model 数据库操作 ...

  9. UIAutomator2的API文档(二)

    1.设备屏幕事件 熄灭屏幕d.screen_off() 唤醒屏幕d.screen_on() 屏蔽状态d.info.get('screenOn')#返回True or False 解锁屏幕d.unloc ...

  10. 谈谈MySQL 索引

    1.索引是什么 索引(Index)是帮助MySQL高效获取数据的数据结构.我们可以简单理解为:索引的目的在于提高查询效率. 2.原理 索引的数据结构是B+树,原理图如下 关于B+树的详细介绍,可以参见 ...