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

项目 内容
这个作业属于哪个课程 2020春季Linux系统与应用(南昌航空大学 - 信息工程学院)
这个作业的要求在哪里 作业链接,点这里啦!
学号-姓名 17041517-漆京
作业学习目标 1. 了解Linux系统C语言编程环境

2. 学习Linux环境C语言开发步骤

1,安装C语言开发环境

(1),安装C语言编译环境

(2),查看gcc版本信息

gcc简介:
GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。
GNU编译器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go语言前端,
也包括了这些语言的库(如libstdc++,libgcj等。)

(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)

在文件夹下创建5个文件,文件名分别如下:

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

(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命令怎么样地去编译和链接程序。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/crystalqj/p/12579366.html