项目 | 内容 |
---|---|
这个作业属于哪个课程 | 班级课程链接 |
这个作业的要求在哪里 | 作业要求链接 |
学号-姓名 | 17041525-张思河 |
作业学习目标 | 1)了解Linux系统C语言编程环境;2)学习Linux环境C语言开发步骤 |
1.安装C语言开发环境
sudo apt install build-essential #ubuntu中安装C语言开发环境
查看gcc版本
gcc -v #查看gcc当前版本信息
查看make版本
make -v #查看make版本信息
2、简单C语言练习
(1).首先我们通过man命令查看帮助文档
man gcc #查看gcc的文档信息
(2).命令行模式简单C语言编译链接等操作
我们可以通过vim编辑器编写一个最简单的程序,如写一个输出自己学号的程序。先创建一个文件夹,然后进入该新创建的文件夹中。
输入完源程序,接下来进行C语言编译的四个阶段,预编译,编译,汇编,链接
a)预编译
用vim打开test.i文件查看
b)编译
gcc -S test.i -o test.s #生成汇编代码,由test.i文件生成test.s文件
我们可以用vim打开test.s文件来查看内容,也可以用命令cat
1)用vim打开test.s文件查看
2)用cat命令查看test.s文件
cat test.s #用cat命令查看test.s文件
c)汇编
gcc -c test.s -o test.o #将源文件生成一个目标文件,由test.s文件生成test.o文件
objdump -d test.o #objdump命令来反汇编该文件来分析test.o文件内容
d)链接
gcc test.o -o test #生成可执行文件test
可执行文件是二进制文件,同样需要用objdump命令来反汇编该文件分析文件内容
objdump -d test #objdump命令来反汇编该文件来分析文件内容
e)运行
./test #运行可执行文件test
(3).多文件编译
在exp4文件夹下面再建一个文件夹mfc(multi-files compile),并在该文件夹下面创建5个文件如下所示:
每个文件的内容分别如下:
main.c
my1.h
my1.c
my2.h
my2.c
完成上面的代码输入,接下来进行编译,对于多个文件编译,可以一次编译链接生成可执行文件,也可以分别编译每个C文件,最后进行链接得到可执行文件。
gcc my1.c my2.c main.c -o main1 #将多个文件一次编译链接生成可执行文件main1
gcc -c #对.c文件进行编译和汇编,但不链接。
gcc my1.o my2.o main.o -o main2 #将多个文件链接生成可执行文件
请说明两种方法的区别?
答:第一种是直接一次编译链接生成可执行文件,第二种是分别编译每个C文件,最后进行链接得到可执行文件。
接下来编写一个简单的Makefile,通过make工具帮助进行编译,在当前文件夹编写一个Makefile文件
之后直接在终端输入make就可以进行编译链接操作