实验四 Linux系统C语言开发环境学习
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 课程链接 |
这个作业的要求在哪里 | 作业要求 |
学号-姓名 | 17041401-黄兰兰 |
作业学习目标 | 1、Linux系统下C语言开发环境搭建 2、学习Linux系统环境C语言开发过程 |
实验内容
1.安装c语言开发环境
sudo apt install build-essential
1).查看gcc的版本信息
gcc -v
2).查看make版本信息
make -v
2.简单C语言练习
1)首先我们通过man命令查看帮助文档
man gcc
2)命令行模式简单C语言编译链接等操作
我们可以通过vim编辑器编写一个最简单的C语言程序,如写一个输出自己学号的程序。先创建一个文件夹,然后进入该新创建的文件夹。
由于一开始我系统的vim编辑器的配置文件被重新更新了,所以中间一系列操作文件名就不一致了,下面我重新配置vim后,建了另一个文件test2.c
cat test2.c
a.预编译
gcc -E test2.c -o test2.i #预编译
test2.c #源程序文件
test2.i #预编译后生成的文件
vim编辑器编写test2.c
用cat查看文件内容
b.编译
gcc -S test2.i -o test2.s
test2.s #编译后生成的文件
c.汇编
gcc -c test2.s -o test2.o
test2.o #目标文件即二进制文件
通过objdump命令来反汇编该文件来分析文件内容
d.链接
gcc test2.o -o test2
test2 #可执行文件
用objdump命令来反汇编该文件分析文件内容
objdump -d test2
e.运行
3).多文件编译
在exp4文件夹下面再建一个文件夹mfc
在该文件夹下面创建5个文件,文件名分别如下:
每个文件的内容分别如下:
cat main.c #查看main.c文件内容
cat my1.h #查看my1.h文件内容
cat my1.c #查看my1.c文件内容
cat my2.h #查看my2.h文件内容
cat my2.c #查看my2.c文件内容
接下来进行编译,对于多文件编译,可以一次编译链接生成可执行文 件,也可以分别编译每个C文件,最后再进行链接得到可执行文件。
请说明两种方法的区别?
多个文件一起编译时:
gcc my1.c my2.c main.c -o main1 将my1.c、my2.c、main.c分别编译后链接成main1可执行文件。
分别编译各个源文件,之后对编译后输出的目标文件链接:
gcc -c my1.c 将my1.c.c编译成my1.o
gcc -c my2.c 将my2.c编译成my2.o
gcc -c main.c 将main.c编译成main.o
gcc my1.o my2.o main.o -o main2 将my1.o、my2.o、main.o链接成main2可执行文件
由于之前的文件夹已存在可执行文件,故先将可执行文件删除,再编写一个简单的Makefile,通过make工具进行编译。
make #根据Makefile文件编译源代码、连接、生成目标文件、可执行文件。
查看Makefie文件内容
Makefile #makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令
make clean make clean #清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件