- 6
- 0
- 约3.23千字
- 约 15页
- 2016-08-10 发布于河南
- 举报
shell下C语言编程大家都知道Linux的shell终端很强大,很多命令和程序都可以通过shell来编译完成。实际上,shell命令以及linux系统内核都是用C和C++编写而成的。下面我就拿个C程序,在shell终端下来实现编译,作为一个小的教程让大家对此加深了解。我编写的是一个C语言程序,输入年份和月份,可以输出打印月历。程序维护工具我使用的是主流的make工具,来实现自动编译连接的,对应编写的有一个简单的Makefile文件。下面,我开始正式演示。 首先,我们要确保有一个可供编译和开发的环境GCC,GCC是GNU推出的功能强大、性能优越的多平台编译器。它的安装非常简单,只需要在终端输入:sudo apt-get install build-essential 即可在线安装。如图一所示:图一下面,先给大家看看我编写的C语言程序源代码,对要演示的程序先有一个基本的了解。如图二、图三、图四和图五:图二图三图四图五对源程序有所了解后,我给大家简单说下make工具的语法规则。一般的语法规则为:target(目标名) : dependency(依赖模块) + command(命令行)。本例中我的源代码程序是由一个名为“shaokunkun_calender.c组成,希望生成的可执行文件为“shaokunkun_calender.exe”,这时候我们就可以通过make编译命令来完成这项工作。本例中需要的Makefile文件,如图六所示:图六从图六中,我们可以看到,这个文件有三个依赖依赖描述语句,说明了三个目标、三个目标的依赖模块及由依赖模块生成目标的命令行。这时候,如果我们运行 make 工具,就可以自动生成可执行文件shaokunkun_calender.exe和目标文件。如图七所示:图七如果我们修改了源代码文件shaokunkun_calender.c,只要重新运行make命令,就可以自动编译修改过的文件并连接生成新的可执行文件。如图七,已经生成了shaokunkun_calender.exe可执行文件。这时候,我们运行下这个程序,就实现了在shell下编译C程序。相关编译结果如图八所示:图八如果,如果我们运行make clean语句,就会执行目标clean所对应的命令行,把可执行文件shaokunkun_calender.exe及目标文件shaokunkun_calender.o全部删除。相关命令操作如图九所示:图九对于这个例子,大家注意,如果运行make ,不给出目标名称。根据系统的默认原则,会自动更新文件中的第一个目标。即 make shaokunkun_calender.exe。其实,这个日历程序还可以用Shell语言编写,能更加方便。不仅能达到同样的显示效果,而且代码简洁明朗,非常便于我们维护和连接。下面,我将我的shell编程运行结果演示给大家,如图十所示:图十 到目前为止,关于在shell环境下C语言的编程,我就基本给大家演示完了。在最后我还给大家示范了一个纯shell编程的例子,让大家来对比学习。相信大多数同学都掌握了吧!下面,我再把我的程序清单、源程序文件及makefile文件附加给大家,为了让大家能够更方便的了解我的教程!程序清单:一个Makefile编译连接文件,一个名为shaokunkun_calender.c的源程序和一个名为shaokunkun_calender_shell的shell程序。如图十一所示:图十一源程序文件C语言代码:#include stdio.h int JgYr(int yr) { if (yr%4==0yr%100!=0||yr%100==0yr%400==0) return 1; else return 0; } int CalWkd(int yr,int mth) { int ds=0,i,rst,wkd; int mthd[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if (JgYr(yr)) mthd[2]=29; for (i=1;imth;i++) ds+=mthd[i]; ds+=1; rst=yr-1+(int)((yr-1)/4)-(int)((yr-1)/100)+(int)((yr-1)/400)+ds; wkd=rst%7; return wkd; } showcld(int wkd,int mtd) { int dt=1,i,j=0; printf(Sun\tMon\tTue\tWed\tThu\tFri\tSat\n); for (i=0;iwkd;i++)
您可能关注的文档
- 《看日历》上课用.ppt
- 《语文园地五日积月累》.ppt
- 【名师指津】2015年英语(北师大版)总复习:话题语汇日积月累课件Unit 3.ppt
- 【名师指津】2015年英语(北师大版)总复习:话题语汇日积月累课件Unit 8.ppt
- 【名师指津】2015年英语(北师大版)总复习:话题语汇日积月累课件Unit 9.ppt
- 【名师指津】2015年英语(北师大版)总复习:话题语汇日积月累课件Unit 11.ppt
- 【名师指津】2015年英语(北师大版)总复习:话题语汇日积月累课件Unit 18.ppt
- 【名师指津】2015年英语(北师大版)总复习:话题语汇日积月累课件Unit 21.ppt
- 【名师指津】2015年英语(北师大版)总复习:话题语汇日积月累课件Unit 22.ppt
- 【名师指津】2015年英语(北师大版)总复习:话题语汇日积月累课件Unit 24.ppt
最近下载
- 现代饭店管理(课件).doc VIP
- 2024-2025学年广东省深圳市龙岗区六年级(上)期末语文试卷.pdf VIP
- 2025-2026学年内蒙古乌兰察布市初中联盟校八年级(上)期末数学试卷(含答案).pdf VIP
- (一模)哈三中2025届高三第一次模拟考试 化学试题(含答案).pdf
- Yamaha 雅马哈 乐器音响 PSR-E383 PSR-EW320 YPT-380 YPT-W320 Reference Manual 用户手册.pdf
- 医患沟通话术集锦.pdf VIP
- 2025年江苏常州初中学业水平考试英语试卷试题(含答案详解).docx VIP
- (一模)2026年合肥市高三第一次教学质量检测英语试卷(含答案)+听力音频+听力原文.docx
- 2023年山东泰安初中学业水平考试生物试卷真题(精校版).docx VIP
- 2024年山东青岛初中学业水平考试生物卷试题真题(精校打印版).pdf VIP
原创力文档

文档评论(0)