实验四:Linux系统C语言开发环境学习
2024-09-01 13:14:17
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 班级课程主页链接 |
这个作业的要求在哪里 | 作业要求 |
学号—姓名 | 17043133—木腾飞 |
作业学习要求 | 1.学习Linux系统中如何查看帮助文档; 2.在Linux系统中安装C语言编译器等开发工具(编辑器,编译器); 3.Linux系统下单个C语言文件编译链接过程(预处理,编译,汇编,链接,执行); 4.Linux系统下多个C语言文件编译链接(命令行方式,make方式) |
1.安装C语言开发环境
(1)安装C语言编译环境
(2)查看gcc版本信息
gcc简介:
GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。GNU编译器套件包括C、C++、Objective-C、Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如Livstdc++、libgc等)
(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),在文件夹下创建五个文件,文件名如下:
每个文件的内容分别如下:
(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命令怎样去编译和链接程序。
最新文章
- 从xfire谈WebService接口化编程
- QT,静态变量要记得初始化
- Java 工程转 C#
- convert Timestamp to Real time
- lintcode:数飞机
- getimagesize函数介绍
- @SuppressWarnings(unchecked)作用解释
- BZOJ 4010: [HNOI2015]菜肴制作( 贪心 )
- Weblogic新建域,Weblogic新建部署环境,Weblogic重新构建域
- Python学习之函数进阶
- 用EditPlus和jdk写Java代码
- 搭建持续集成接口测试平台(jenkins+ant+jmeter)
- django 初始命令
- 使用android快速开发框架afinal的FinalDb操作android数据库
- css怎样去掉多个Img标签之间的间隙
- android笔记---百度地图api应用 (二) 获取公交路线的详细信息
- android 获取配置文件 相对路径
- JavaWeb学习—思维导图
- cowboy页面重定向的例子
- vue中添加swiper轮播插件