- 11
- 0
- 约4.08千字
- 约 6页
- 2017-06-12 发布于北京
- 举报
实验二:Linux下c语言开发环境
实验目的
熟悉Linux下的C语言开发环境及流程;
熟练掌握Vi、GCC、GDB及Make等工具的使用;
理解makefile的作用及规则;
实验设备
硬件:PC;
软件:VMware Workstation 虚拟机和Red Hat Enterprise 5.0操作系统;
实验预习要求
熟悉Linux下C语言开发流程;
掌握Vi编辑器的使用;
掌握GCC编译器的使用;
掌握GDB调试器的使用;
Make工程管理器;
实验内容
Linux下c语言开发流程;
Vi和Vim编辑器的使用;
GCC编译器的使用;
GDB调试器的使用;
Make工程管理器的使用;
实验步骤
1.Linux下c语言开发流程
Linux下进行C语言开发时,单个.C文件需经历编辑、预处理、编译、汇编、链接等过程才可转换成二进制目标文件,其过程如图2-1所示,一般多数格式为ELF。对于多个C源文件组成的项目,淡化文件与文件之间存在依赖关系,减少编译时间,提高编译效率,方便半自动化编译过程,提供makefile文件,使用make可方便完成项目编译、安装、卸载等工作。
图2-1 Linux环境下C源程序编译过程
2.Vi/Vim编辑器的使用
Vim是Vi编译器的增强版本,一般Linux发行版本中均以此工具为默认编译器。为提高编辑速度,Vi/Vim提供三种模式:命令模式、插入模式和底行模式,其间切换方法与对应模式作用如图2-2所示。
图2-2 Vi/Vim工作模式切换图
a. 在“/root”目录下建一个名为“/Vi”目录下。
mkdir /root/Vi
b. 进入“/Vi”目录。
cd /root/Vi
c. 将文件“/etc/inittab”复制到“/Vi”目录下。
cp /etc/inittab ./
d.使用Vi打开“/Vi”目录下的inittab。
Vi ./inittab
e.设定行号,指出设定initdefault的所在行号。
:set nu
f.将光标移动到该行。
17enter
g.复制该行内容。
yy
h.将光标移到最后一行行首。
G
i.粘贴复制行的内容。
P
j.撤销上一步的动作。
U
k.将光标移动到最后一行的行尾。
$
l.粘贴复制行的内容。
P
m.光标移到“si::sysinit:/etc/rc.d/rc.sysinit”。
21G
n.删除该行。
dd
o.存盘但不退出。
:w(底行模式)
p.将光标移到首行。
1G
q.插入模式下输入“Hello,this is Vi world!”。
按i建并输入“Hello,this is Vi world!”
r.返回命令行模式。
Esc
s.向下查找字符串“0:wait”。
/0:wait
t.再向上查找字符串“halt”。
? halt
u.强制退出Vi,不存盘。
:q!
3.GCC编译器的使用
1)创建/tmp/testpro目录;
#mkdir /tmp/testpro
2)进入/tmp/testpro目录后,使用Vi编辑器创建hello.h,hello.c和main.c文件并保存,其文件内容如下所示;
//hello.h
#ifndef HELLO_H
#define HELLO_H
void hello(const char *name);
#endif
程序2:
//hello.c
#include stdio.h
void hello(const char *name)
{
printf(hello %s! \n,name);
}
程序3:
//main.c
#include hello.h
int main()
{
hello(Embedded Operating System);
return 0;
}
3)生成二进制可执行文件;
$gcc –Wall –o main –c hello.c main.c
$./ main
4)将hello.c生成静态库,并链接执行;
$ gcc -c hello.c -o hello.o
$ ar rcs libhello.a hello.o
$ gcc main.c -o main -static -L. -lhello
$ ./main
5)将hello.c生成动态库,并链接执行;
$ gcc -fPIC -c hello.c -o hello.o
$ gcc -shared -o libhello.so.1.0.0 hello.o
$ ln -s libhello.so.1.0.0 libhello.so
$ gcc main.c -o main -L. -lhello
$ expo
您可能关注的文档
- 159班第20周班会内容.doc
- 15秋南大职业生涯管理第一次作业.doc
- 160个最具内涵寓意的古语名字,取名专用.doc
- 16春东财《电子商务安全》在线作业一(随机).doc
- 16秋北交《城市轨道交通设备》在线作业二.doc
- 17-鄂州市招投标监督管理局工作责任制流程图.doc
- 17春北交《可靠性基础》在线作业一.doc
- 17春秋华师《CAI课件设计》在线作业.doc
- 198山东师范大学学生食堂剩余电流电气火灾监控系统项目小结.doc
- 1G的文件压缩成1MB.doc
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
最近下载
- 课件第3讲gps伪距测量原理.pptx VIP
- 焊割工操作安全培训内容课件.pptx VIP
- 蚌埠市博物馆展览陈列大纲.pdf VIP
- 《爷爷的爷爷从哪里来》整本书阅读 课件 四年级下册语文(统编版).pptx VIP
- 指南共识│咯血诊治专家共识.pptx
- 博物馆陈列展览大纲精编.docx VIP
- Q/GDW 376.1-2009《电力用户用电信息采集系统通信协议:主站与采集终端通信协议》及编制说明1.doc VIP
- 阀门电动执行装置设计毕业设计(论文).doc VIP
- 中考数学二轮复习 专题11 二次函数与矩形、菱形的存在性问题(知识解读)(解析版).doc VIP
- 博物馆陈列展览大纲(2019最新版).docx VIP
原创力文档

文档评论(0)