实验三 LINUX下的C程序设计
Linux实验报告3 使用gcc编译C程序 11计科 张慧

Linux实验报告一.实验目的1.掌握Linux环境下的基本操作命令。
2.使用gcc编写简单的C程序,编译运行和调试。
二.实验环境VMware虚拟机、Ubuntu三.预备知识gcc的一些重要参数1. -I 指定头文件搜索路径(I 表include)如 $gcc -c hello.c -o hello.o -I/usr/include.-L 指定要连接的库所在的目录 -l 指定要连接的库的名字如$gcc main.o -L/usr/lib -lqt -o hello3. -D 定义宏(D-define)-D定义宏有两种情况,一种是-DMACRO 相当于程序中使用#define MACRO 另外可以-DMACRO=A 相当于程序中使用#define MACRO A 这只是一个编绎参数,在连接时没有意义.如: $gcc -c hello.c -o hello.o –DDEBUG4. -g 生成调试信息-g生成调试信息,这对使用gdb进行调试是必须的。
带有调试信息的文件要比普通文件要大,但不影响运行,可以用strip命令除于其中的调试信息5. -c指于gcc只进行编绎,不连接6. -ansi 指示gcc只支持ansi c标准语法7. -o 指定输出文件名8. -O 指定优化处理-O0不优化 -O1或-O 一级优化 -O2 二级优化...-O3,-O4级别越高,,代码越优,编绎时间越长。
9. -m486 针对特定的目标计算机进行优化,默认是38610. -w 关闭编译器警告信息四.实验内容使用gcc创建一个简单的程序,使程序输出语句“my name is zhanghui”.五.实验步骤5.1 创建zhanghui.c的文件5.2 编辑如下内容,然后保存退出:#include<stdio.h>main(){printf(“my name is zhanghui”);}4.2 创建成功后编译zhanghui.c4.3执行a.out,得到结果如下:五.心得体会通过本次实验我更加熟悉vi编辑器的使用了,能熟练使用一些操作指令,可以在linux操作平台上编写一段C语言小代码,实现对其的输出。
linux实验报告3 Linux上C程序编译,调试和工程文件管理

深圳大学实验报告课程名称:Linux操作系统实验项目名称:Linux上C程序编译,调试和工程文件管理学院:计算机与软件学院专业:软件工程指导教师:冯禹洪报告人:文成学号:2011150259 班级:02 实验时间:2013/12/31实验报告提交时间:2013/12/31教务处制一、实验目标:熟悉Linux上C程序设计环境,包括以下内容:1. 联机帮助man命令2. 编译工具gcc的使用3. 熟悉使用gdb来调试程序4. 熟悉C工程文件的管理工具makefile二、实验环境与工件湖边Linux实验室Fedora 13三、实验内容与步骤1.动态库函数可以在多个应用程序之间共享,可以减少应用程序文件的容量和应用程序的装载时间。
因此,熟悉构建动态库可以提高软件的编写质量。
请跟随以下步骤构建动态库message,并用其编写程序、编译和运行。
(40分)1.1编写源程序message.c(见图1)和main.c(见图2)图1. message.c源程序图2.main.c源程序1.2用以下命令对message.c进行编译,其中,“-fPIC”选项是告诉gcc产生的代码不要包含对函数和变量具体内存位置的引用。
1.3以上命令将获得目标文件message.o,使用以下命令建立共享函数库message:1.4使用1.3获得的共享函数库来编译main.c文件1.5设置共享函数库搜索路径1.6运行程序并附上结果1.7构建静态可执行程序1.7.1$gcc –c message.c1.7.2$ar –crv libmsg.a message.o1.7.3$gcc –o main main.c –L./ -lmsg1.7.4$./main1.8运行以下两个命令并截图说明结果:$ldd goodbye$ldd main$ls –l goodbye main/*附加题:经观察,如果用ubuntu, main 和googbye的大小在一些发行版本下没有区别,如果实验如此,请尝试解释这一现象。
实验三 LINUX下的C程序设计

实验三Linux下的C程序设计【内容提要】熟悉linux下的C程序设计工具。
掌握vi、gcc、gdb等软件的用法。
在基本实验的基础上重点掌握3个案例的编程。
这3个案例分别是:文件拷贝程序设计、猜数字游戏设计、进程调用程序设计、多文件项目的AUTOTOOLS应用。
【考核内容】随机抽取1个案例进行闭卷式机考即编辑、编译、调试与运行和结果分析。
3.1 实验目的通过vi或emacs和gcc的熟练使用,掌握linux下C程序的设计、调试与运行的原理、方法与应用技能。
通过进程编程,掌握进程程序的设计、调试、运行等以及相关知识。
通过autotools的练习,掌握使用make的自动安装与压缩文件的制作技术。
3.2 实验要求1.充分复习教材中有关实验的内容。
2.实验前根据实验目的和本人的情况设计出简单程序、分支程序、循环程序;写出实验中要解决的问题。
3.把相应的程序上机调试通过。
4.实验之后写出实验报告。
3.3实验过程1. 编写一个c语言源程序。
实现从键盘输入n个整数,在内存中自小到大排序后输出。
要求在vi或emacs中编辑、用gcc编译连接运行、用gdb进行调试,记录输出的结果并分析。
其中gdb用法见附录3的内容。
2.文件拷贝程序设计本程序的功能是实现两文件的拷贝,要求输入源文件名和目标文件名。
#include <stdio.h>#include <stdlib.h>main( ){char c;char name1[20],name2[20];FILE *fp1,*fp2;printf(“Input sorfilname:”);scanf(“%s”,name1);printf(“Input desfilname:”);scanf(“%s”,name2);fp1=fopen(name1,”r”);if(fp1==NULL){ printf(“Cannot open rfile \n”);exit (1);}fp2=fopen(name2,”w”);if(fp2==NULL){printf(“Cannot open wfile \n”); exit (1);}while((c=fgetc(fp1))!=EOF)fputc(c,fp2);fclose(fp1);fclose(fp2);printf(“copy complete!\n”);}此程序经过编译链接和执行后,其结果如图7所示。
linuxc开发课程设计

linux c 开发课程设计一、课程目标知识目标:1. 学生能掌握Linux环境下C语言编程的基础知识,包括数据类型、运算符、控制结构等。
2. 学生能理解并运用指针、数组、结构体等高级概念进行程序设计。
3. 学生能掌握文件操作、进程控制等Linux系统调用的基本方法。
技能目标:1. 学生具备使用Linux命令行环境进行C语言编程的能力。
2. 学生能够运用调试工具(如GDB)进行程序调试,解决常见编程问题。
3. 学生能够编写简单的Linux C应用程序,实现基础功能,如文件操作、多进程等。
情感态度价值观目标:1. 学生培养对编程的兴趣,激发探究计算机科学领域的热情。
2. 学生树立良好的编程习惯,注重代码规范,提高团队协作能力。
3. 学生认识到Linux系统在软件开发中的重要性,增强对开源文化的理解和尊重。
课程性质:本课程为高年级专业课程,以实践为主,注重培养学生的动手能力和实际开发能力。
学生特点:学生具备一定的C语言基础,对编程有一定了解,但对Linux系统及C语言在Linux环境下的应用尚不熟悉。
教学要求:教师需结合实际案例,引导学生动手实践,通过项目驱动、任务驱动的教学方法,使学生将理论知识与实际应用相结合,提高综合运用能力。
同时,注重培养学生解决问题的能力和团队协作精神。
通过本课程的学习,使学生具备Linux C开发的基本技能,为后续专业课程和实际工作打下坚实基础。
二、教学内容1. Linux基础与环境配置- 熟悉Linux操作系统基本概念与常用命令。
- 学习Linux下C语言开发环境的搭建,包括GCC编译器、Make工具等。
2. C语言基础回顾- 复习C语言的基本语法、数据类型、运算符、控制结构等。
- 强调Linux环境下C语言编程的规范与注意事项。
3. 指针、数组与字符串- 深入理解指针的概念与操作,掌握数组与字符串的处理方法。
- 学习在Linux下如何有效运用指针、数组进行内存操作。
4. 函数与模块化编程- 掌握函数的定义、调用、参数传递等知识。
Linux下C程序设计实验报告

实验2 Linux下C程序设计实验目的1、掌握Linux下C语言程序设计的基本步骤。
2、了解和掌握gcc编译器使用实验内容一、编写C语言程序:输出两行文字“how are you”,在Linux下编辑,编译,运行。
实验步骤:1. 编辑:$gedit hello.进入gedit编辑程序,保存。
2. 编译:$gcc –o hello hello.c。
没有错误出现命令提示符,ls命令查看生成hello可执行程序。
3, 运行:$./hello。
看到程序结果。
程序结果:[root@localhost ~]# gcc -o hello hello.c[root@localhost ~]# lsanaconda-ks.cfg hello hello.c~ install.log.syslogDesktop hello.c install.log[root@localhost ~]# ./hellohow are you[root@localhost ~]#二、编辑以下程序loop.c2. 编译 gcc loop.c –o loop3.(前台)运行 ./loop按Ctrl-C终止4. 后台运行 ./loop &(可多次使用该命令)5. 多次使用ps命令查看进程状态注意loop的运行时间注意ps -l命令和loop命令的父进程号均为shell进程6. 使用kill命令控制该进程暂停kill –STOP <该进程的进程号> 恢复kill –CONT <该进程的进程号> 终止kill –KILL <该进程的进程号>程序结果:[root@localhost ~]# gcc -o loop loop.c[root@localhost ~]# ./loop&[1] 21118[root@localhost ~]# psPID TTY TIME CMD21074 pts/3 00:00:00 bash21118 pts/3 00:00:12 loop21125 pts/3 00:00:00 ps[root@localhost ~]# psPID TTY TIME CMD21074 pts/3 00:00:00 bash21118 pts/3 00:00:16 loop21128 pts/3 00:00:00 ps[root@localhost ~]# kill -stop 21118[root@localhost ~]# psPID TTY TIME CMD21074 pts/3 00:00:00 bash21118 pts/3 00:00:49 loop21145 pts/3 00:00:00 ps[1]+ Stopped ./loop[root@localhost ~]# psPID TTY TIME CMD21074 pts/3 00:00:00 bash21118 pts/3 00:00:49 loop21148 pts/3 00:00:00 ps[root@localhost ~]# psPID TTY TIME CMD21074 pts/3 00:00:00 bash21118 pts/3 00:00:49 loop21153 pts/3 00:00:00 ps[root@localhost ~]# kill -cont 21118[root@localhost ~]# psPID TTY TIME CMD21074 pts/3 00:00:00 bash21118 pts/3 00:00:53 loop21159 pts/3 00:00:00 ps[root@localhost ~]# psPID TTY TIME CMD 21074 pts/3 00:00:00 bash21118 pts/3 00:00:55 loop21160 pts/3 00:00:00 ps[root@localhost ~]# kill -kill 21118 [root@localhost ~]# psPID TTY TIME CMD 21074 pts/3 00:00:00 bash21167 pts/3 00:00:00 ps[1]+ Killed ./loop [root@localhost ~]#。
实验三 Linux环境下的C程序设计

实验三Linux环境下的C程序设计实验目的:使学生熟悉Linux开发环境,加深对所学知识的理解,培养学生的学习兴趣,提高学生的动手能力。
实验内容1. 掌握linux环境下GNU c语言相关工具的原理和使用方法2. 掌握g;obc的作用3. 掌握Linux环境下c语言编程的一般方法。
实验步骤:1. 熟悉GNU 工具项目管理工具进入教材第五章对应的代码目录$ cd /linux_code/code/5/scropt运行scripy5-1.sh 脚本实现项目管理查看scripy5-1.sh的内容$ cat script5-1.sh反复运行该脚本,观察结果$ bash script5-1.sh$ bash script5-1.sh$ bash script5-1.sh运用GNU make工具进行项目管理观察makefile文件script5-2_makefile清楚目标代码$ make -f script5-2_makefile clean反复执行make -f script5-2_makefile,比较与shell脚本管理的区别$ make -f script5-2_makefile clean$ make -f script5-2_makefile clean$ make -f script5-2_makefile clean修改其总的一个文件,例如,app.c$ vi app.c 修改后重新保存继续运行$ make -f script5-2_makefile clean观察区别注意:如果直接键入$ make则相当于$ mmake -f makefile默认为makefile 或Makefile文件2. 掌握g;obc的作用汇编汇编代码exam5-7.s$ as exam5-7.s -o exam5-7.o链接目标代码exam5-7.o$ ld exam5-7.o -o exam5-7运行$ ./exam5-7比较查看exam5-8.c$ cat exam5-8.c编译与连接exam5-8.c$ gcc -o exam5-8 exam5-8.c运行$ ./exam5-83. 文件与目录的编程进入教材第六章对应的代码目录$ cd /linux_code/code/6/script$ make若有警告不予理会分别分析与运行相应代码。
linux下c程序的编写实验报告

linux下c程序的编写实验报告实验主题:在Linux下编写C程序的实验报告一、引言(150-200字)Linux是一种广泛应用的操作系统,具有高度开放性和灵活性,也是许多程序员首选的开发环境。
在Linux中,通过编写C程序可以实现各种应用和功能。
本实验旨在通过一步一步的说明和回答,介绍在Linux下编写C 程序的基本步骤和方法。
二、实验步骤(400-500字)1. 设置编程环境在Linux中编写C程序,首先需要安装相关的开发工具和编译器。
常用的编译器有gcc和clang,可以通过包管理器进行安装。
同时,也需要一个文本编辑器来编写C代码,比如vim或者emacs。
2. 编写Hello World程序Hello World程序是C语言学习的经典入门程序,它可以在屏幕上输出"Hello World"。
在文本编辑器中新建一个文件,命名为hello.c,然后在文件中输入以下代码:#include <stdio.h>int main() {printf("Hello World\n");return 0;}保存文件后,使用gcc编译器将该文件编译成可执行文件。
在终端中执行以下命令:gcc -o hello hello.c此时会生成一个名为hello的可执行文件。
通过执行该文件,可以在终端中看到输出结果"Hello World"。
3. 命令行参数和用户输入C程序可以接受命令行参数和用户输入,从而实现更复杂的功能。
在上一步编写的程序的基础上,我们尝试接收用户输入的姓名,并输出相应的问候语。
在hello.c文件中添加以下代码段:#include <stdio.h>int main(int argc, char *argv[]) {char name[100];printf("Please enter your name: ");scanf("s", name);printf("Hello, s!\n", name);return 0;}重新编译程序并执行,可以看到在终端中会提示用户输入姓名,并输出相应的问候语。
linux程序设计实验报告

linux程序设计实验报告《Linux程序设计实验报告》在计算机科学领域,Linux操作系统一直是一个备受关注的话题。
作为一个开源的操作系统,Linux拥有强大的稳定性和灵活性,因此在各种领域都得到了广泛的应用。
本次实验报告将介绍我在Linux程序设计实验中的一些经验和收获。
实验一:环境搭建在实验的第一部分,我们需要搭建Linux操作系统的开发环境。
我选择了Ubuntu作为我的开发平台,并安装了gcc编译器和其他必要的工具。
在这个过程中,我学会了如何在Linux系统中安装软件包,配置环境变量以及使用命令行工具进行开发。
实验二:基本程序设计在这一部分,我们需要编写一些简单的程序来熟悉Linux系统的编程环境。
我选择了C语言作为主要的开发语言,因为在Linux系统中C语言是最常用的编程语言之一。
通过编写一些简单的程序,我学会了如何在Linux系统中进行编译、链接和调试。
实验三:文件操作在Linux系统中,文件操作是一个非常重要的部分。
在这个实验中,我们需要编写一些程序来进行文件的读写操作。
我学会了如何使用系统调用来打开、读取和写入文件,以及如何处理文件操作中可能出现的错误。
实验四:进程管理Linux系统是一个多进程的操作系统,因此进程管理是一个非常重要的主题。
在这个实验中,我学会了如何创建新进程、进行进程间通信以及处理进程的状态变化。
通过编写一些简单的多进程程序,我加深了对Linux系统进程管理的理解。
总结通过这次实验,我对Linux系统的程序设计有了更深入的了解。
我学会了如何搭建开发环境、进行基本的程序设计、进行文件操作以及进行进程管理。
这些知识不仅对我未来的学习和工作有着重要的意义,也为我进一步深入学习Linux 系统打下了坚实的基础。
希望通过不断的实践和学习,我能够在Linux系统的程序设计领域有所建树。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三Linux下的C程序设计
【内容提要】
熟悉linux下的C程序设计工具。
掌握vi、gcc、gdb等软件的用法。
在基本实验的基础上重点掌握3个案例的编程。
这3个案例分别是:文件拷贝程序设计、猜数字游戏设计、进程调用程序设计、多文件项目的AUTOTOOLS应用。
【考核内容】随机抽取1个案例进行闭卷式机考即编辑、编译、调试与运行和结果分析。
3.1 实验目的
通过vi或emacs和gcc的熟练使用,掌握linux下C程序的设计、调试与运行的原理、方法与应用技能。
通过进程编程,掌握进程程序的设计、调试、运行等以及相关知识。
通过autotools的练习,掌握使用make的自动安装与压缩文件的制作技术。
3.2 实验要求
1.充分复习教材中有关实验的内容。
2.实验前根据实验目的和本人的情况设计出简单程序、分支程序、循环程序;写出实验中要解决的问题。
3.把相应的程序上机调试通过。
4.实验之后写出实验报告。
3.3实验过程
1. 编写一个c语言源程序。
实现从键盘输入n个整数,在内存中自小到大排序后输出。
要求在vi或emacs中编辑、用gcc编译连接运行、用gdb进行调试,记录输出的结果并分析。
其中gdb用法见附录3的内容。
2.文件拷贝程序设计
本程序的功能是实现两文件的拷贝,要求输入源文件名和目标文件名。
#include <stdio.h>
#include <stdlib.h>
main( )
{
char c;
char name1[20],name2[20];
FILE *fp1,*fp2;
printf(“Input sorfilname:”);
scanf(“%s”,name1);
printf(“Input desfilname:”);
scanf(“%s”,name2);
fp1=fopen(name1,”r”);
if(fp1==NULL)
{ printf(“Cannot open rfile \n”);
exit (1);
}
fp2=fopen(name2,”w”);
if(fp2==NULL)
{
printf(“Cannot open wfile \n”); exit (1);
}
while((c=fgetc(fp1))!=EOF)
fputc(c,fp2);
fclose(fp1);
fclose(fp2);
printf(“copy complete!\n”);
}
此程序经过编译链接和执行后,其结果如图7所示。
如果在编译中出现了错误,请认真
阅读错误的原因,主要是引号的全半角问题。
图7 文件拷贝程序编译运行与结果
3.猜数字游戏设计
利用计算机随机产生一个1至100之间的数,让读者猜。
如果猜对了就显示“You are right!” ,如果猜错了,就显示“You are wrong!Once again”,并告诉读者是猜大了(too big)还是猜小了(too small)。
最多猜8次。
参考程序:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{ int number, guess, i=8;
srand(time(NULL));
number = rand() % 100 + 1;
printf("Please guess a number:\n");
while(i > 0)
{ scanf("%d",&guess);
if(guess == number)
{ printf("You are right!\n\n");
return 0; }
else if(guess > number)
{ printf("Sorry,your are wrong!");
printf("too big\n"); }
else
{ printf("You are wrong!Once again");
printf("too small\n"); }
i--;
}
printf("Game over!\n\n");
return 0;
}
此程序经过编译链接和执行后,其结果如图8。
这里利用了共享文件夹。
先把本教材中的文件保存在共享文件夹里,再copy到读者目录下编译,最后执行并得到了相应结果,也能直接在linux中用vi等录入后编译执行得到结果。
图8 猜数字游戏程序编译运行与结果
4. 进程调用程序设计
本程序功能是实现进程创建和显示创建是否成功与父子进程的id号。
#include <sys/types.h>
#include <stdio.h>
#include <sys/wait.h>
#include<unistd.h>
main()
{ pid_t pid;
printf("Now only one process\n");
printf("Calling fork...\n");
pid= fork() ;
if (! pid)
{ printf("I'm the child\n"); exit(0); }
else if (pid>0) {
wait(NULL);
printf("I'm the parent,child has pid %d\n",pid);
}
else
printf("Fork fail!\n");
}
此程序经过编译链接和执行后,其结果如图9所示。
图9 进程调用程序编译运行与结果。