已阅读5页,还剩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 int JgYr(int yr) if (yr%4=0&yr%100!=0|yr%100=0&yr%400=0) return 1; else return 0; int CalWkd(int yr,int mth) int ds=0,i,rst,wkd; int mthd13=0,31,28,31,30,31,30,31,31,30,31,30,31; if (JgYr(yr) mthd2=29; for (i=1;imth;i+) ds+=mthdi; 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(SuntMontTuetWedtThutFritSatn); for (i=0;iwkd;i+) printf(t); j+; while (j!=7) printf(%d,dt); if (j6) printf(t); else printf(n); dt+; j+; while (1) for (j=0;j7;j+) printf(%d,dt); if (j!=6) printf(t); else printf(n); if (dt!=mtd) dt+; else return 0; int main() int yr,mth,mtd,wkd,mthd13=0,31,28,31,30,31,30,31,31,30,31,30,31; printf(请输入年:); scanf(%d,&yr); printf(请输入月:); scanf(%d,&mth); if (yr0|mth12) return 0; if (JgYr(yr) mthd2=29; mtd=mthdmth; wkd=CalWkd(yr,mth); showcld(wkd,mtd); printf( n); return 0; Makefile文件代码,如下:#Makefile simple exampleshaokunkun_calender.exe:shaokunkun_calender.o gcc -o shaokunkun_calender.exe shaokunkun_calender.o -lmshaokunkun_calender.o:shaokunkun_calender.c gcc -c sh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年青海辅警招聘考试题库及1套参考答案详解
- 2025年黔南布依族苗族自治州辅警招聘考试题库附答案详解
- 2025年衡阳辅警招聘考试真题附答案详解(b卷)
- 2025年玉溪辅警招聘考试真题及一套答案详解
- 2025年黄南州辅警协警招聘考试备考题库附答案详解(研优卷)
- 2025年铁岭辅警招聘考试题库及答案详解(有一套)
- 2025年鄂州辅警协警招聘考试真题及答案详解(名师系列)
- 2025年海西州辅警协警招聘考试备考题库含答案详解(考试直接用)
- 2025年盘锦辅警协警招聘考试备考题库附答案详解
- 2025年海西州辅警协警招聘考试真题附答案详解(能力提升)
- 2025贵州毕节市金沙县国有资本投资运营集团有限公司招聘笔试及笔试历年备考题库附带答案详解2卷
- 福建省厦门市大同中学2025-2026学年高二物理第一学期期末统考试题含解析
- 分期购车的合同范本
- 2025至2030废旧手机行业项目调研及市场前景预测评估报告
- 箱变移位施工合同协议
- 智启氢程:AI技术在氢能领域的应用研究
- 全国大学生职业规划大赛《运动训练》专业生涯发展展示【高职(专科)】
- IPC7711C7721C-2017(CN)电子组件的返工修改和维修(完整版)
- 学堂在线 护理研究方法 期末考试答案
- GB/T 9116-2010带颈平焊钢制管法兰
- 第二课美术作品与客观世界(2)课件-高中美术湘美版(2019)美术鉴赏
评论
0/150
提交评论