天天看点

【Linux内核实验】 gcc与make使用

1.实验任务 

1) 熟悉并基本掌握GCC的基础知识

2) 为自己的工程编写makefile文件 

2.实验内容 

2.1 gcc 执行过程 

2.1.0 准备工作

Ubuntu中GCC的安装

sudo apt-get update /*更新源地址*/
sudo apt-get install gcc /*安装GCC*/
           

注:谨慎选择可用源,注意源是否支持当前linux版本

2.1.1 实验 一

新建一个名称为 1的c文件 

sudo gedit 1.c 
           

键入简单的C语言程序

【Linux内核实验】 gcc与make使用

预编译过程 

处理宏定义和include,并做语法检查。

注:  

| 表示管道,处理经由前面一个指令传出的正确输出信息,也就是传递cat的结果;wc -l 统计该文件的行数。

cat命令连接文件并打印到标准输出设备上,cat经常用来显示文件的内容

【Linux内核实验】 gcc与make使用

编译过程 

这个阶段,生成汇编代码并进行语法检查。

【Linux内核实验】 gcc与make使用

汇编过程 

这个阶段,生成目标代码。 

此过程生成ELF格式的目标代码。 

注:as 命令GNU组织推出的一款汇编语言编译器,作用是汇编制定的汇编文件

file命令用来探测给定文件的类型。file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程

【Linux内核实验】 gcc与make使用

链接过程:

生成可执行代码。链接分为两种,一种是静态链接,另外一种是动态链接。使用静态链接的好处是,依赖的动态链接库较少,对动态链接库的版本不会很敏感,具有较好的兼容性;缺点是生成的程序比较大。使用动态链接的好处是,生成的程序比较小,占用较少的内存。 

【Linux内核实验】 gcc与make使用

程序运行   

【Linux内核实验】 gcc与make使用

2.1.2 实验二

新建 hello.c 

【Linux内核实验】 gcc与make使用

执行情况如下: 

注:结果中出现的Warning是因为在修改系统文件时我们不能使用sudo命令去修改,必须使用系统内置的管理员权限,即最简单的方法是使用gksudo命令启用root编辑,当然你可以把的账户权限添加到管理员权限中也是可以的

【Linux内核实验】 gcc与make使用

2.2  编写makefile文件 

2.2.1 实验三

首先新建文件 

包括makefile sub1.c sub2.c main.c cmx.h

【Linux内核实验】 gcc与make使用

然后编辑各个文件的内容: 

makefile文件 

注:rm -f为强制删除文件或目录

【Linux内核实验】 gcc与make使用

main.c文件 

【Linux内核实验】 gcc与make使用

sub1.c文件 

【Linux内核实验】 gcc与make使用

sub2.c文件 

【Linux内核实验】 gcc与make使用

头文件cmx.h 

【Linux内核实验】 gcc与make使用

执行make,默认在当前路径下查找makefile文件并执行。如下图所示 

注:make需要另行安装

【Linux内核实验】 gcc与make使用

(很尴尬的事……sub2.c里面忘记换行……emmmmmm……)

3 实验心得 

GCC指令

语法

gcc(选项)(参数)
           

选项

-o:指定生成的输出文件;
-E:仅执行编译预处理;
-S:将C代码转换为汇编代码;
-wall:显示警告信息;
-c:仅执行编译操作,不进行连接操作。
           

参数

C源文件:指定C语言源代码文件。

4.引用链接

https://blog.csdn.net/qq_33478897/article/details/77456537

http://man.linuxde.net

https://blog.csdn.net/shenquanyue/article/details/79699466

http://blog.sina.com.cn/s/blog_675f93ad0102vc2h.html

继续阅读