- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10讲 GCC编译器的使用与C语言的编程
第10讲 GCC的使用与Linux进程创建 Linux的程序文件名后缀 GCC编译器 GCC是GNU C Comiler的缩写,是GNU推出的 完全免费、功能强大,支持多种语言(C,C++,FORTRAN,PASCAL,ADA)的编译器。 支持多种硬件平台,执行效率快,比一般的编译器的执行效率高20%~30% 。 GCC编译过程 预处理:调用linux的CPP预编译程序,生成.i的临时文件。 将#include 文件拷贝到要编译的源文件中。 用实际值替代#define文本。 在调用宏的地方进行宏替换。 命令#gcc –E –o test.i test.c或#cpp test.ctest.i 汇编:调用linux的as汇编编译程序,生成.S的汇编文件。 命令#gcc –S test.c 编译:调用linux的cc1编译程序,生成.o的目标文件。 命令#gcc –c test.c 链接:调用linux的ld链接程序,生成最后的可执行文件。 命令#gcc –o test test.c 执行 #./test Gcc的基本用法 Gcc [options] [filenames] Options有如下常用选项: -S:对源程序进行预处理和编译,不进行汇编和链接,自动生成汇编文件。 -c:执行预处理、编译、汇编而不链接,生成.o为后缀的目标文件。通常用于编译没有主程序的子程序文件。 -o output_filename:指定输出文件名为output_filename,不指定时缺省文件名为a.out -g:产生调试信息。 -x:指定待编译程序的语言。如gcc –xc++ test.cpp -O0:不优化。 -O1:第一级优化。允许与-g共用,编译链接过程稍慢。 -O2:第二级优化。特别对于大型程序,可以大幅度提高运行速度。 -O3:第三级优化。与O2的区别在于它允许把函数直接插入到调用的代码处 。 GDB调试器 GDB是GNU自带的调试工具,GDB支持C,C++,Modula-2等。 编译程序时加调试开关 #gcc –g -o test test.c 进入调试状态# gdb test GDB常用命令 GDB其他使用技巧 在GDB下执行shell命令 ( gdb)shell [commandline] 重复上次命令的执行——直接回车 指令级的调试 stepi/nexti (指令级单步执行) disp/x $寄存器 (显示寄存器的值) 出错后的调试。程序发生错误时,会在当前目录下产生一个名为core的内存映像文件。 #gdb a.out core 获得帮助 Shell状态下,运行info gdb 或 man gdb GDB状态下,运行(gdb)help或(gdb)help [GDB命令名] Linux中的进程 进程这个概念是伴随着Unix的产生而出现的,Unix之父Dennis Ritchie当初用来发表Unix的论文的时候就提出了用进程的观点来看待整个操作系统,随着操作系统理论的发展,进程作为程序执行的实体和资源分配的单位的观念也在变化。线程的出现,改变了进程的传统概念。但是在linux中,进程仍然保留着传统的意义,它包括四个要素: 程序段。 系统堆栈空间。 task_struct结构(PCB)。 专有内存空间。 Linux中的线程 linux的线程模型是一种一对一模型,也就是每个线程实际上在核心是一个单独的进程,核心的调度程序负责线程的调度。 进程控制块和堆栈 作为描述进程信息,操作系统感知进程存在的进程控制块(PCB),在linux中是由结构task_struct来实现的。task_struct的定义在include/linux/sched.h中给出。 当产生一个的进程时,在内核空间中会分配一个8K的空间来记录新进程的信息,其中包括task_struct结构和为进程分配的内核堆栈,当进程由于系统调用转到内核时,就要切换到该进程的内核堆栈了。 task_struct结构可以被系统中的许多模块访问,如调度程序、资源分配程序、中断处理程序等。由于task_struct结构经常被访问,它常驻内存。 linux进程的创建与执行 linux进程创建用以下系统调用完成: 系统调用fork():父进程的所有资源通过数据结构复制全部给子进程。 fork()用于创建进程。 后增设的系统调用vfork(): 除了task_struct和系统空间堆栈以外的资源全部都通过数据结构指针的复制“遗传”。所以vfork创建的是线程,而不是进程。 系统调用clone():进程的资源有选择地复制给子进程,而没有复制的数据结构(资源如内存空间)通过指针的复制让子进程共享。 用clone既可以创建一个进程,也可以创
您可能关注的文档
- 监控的安防产品基础培训-矩阵.ppt
- 真功夫 经理级别测评手的册P18.doc
- 盱眙日报社创建微信公众账号执的行方案 执行方案.ppt
- 真功夫 餐厅绩效考核手册的P14.doc
- 盾的构操作培训.ppt
- 目视化的管理手册.pptx
- 省赛 射频宽带放大器报告 最的终报告.doc
- 矛盾纠纷排查的调处工作汇报.doc
- 矛盾纠纷的案例.doc
- 真空开关参数的介绍.ppt
- 基于跨学科学习的中学物理实验与英语词汇教学的整合教学研究课题报告.docx
- 《基于大数据的智慧城市交通拥堵治理效果评估与改进策略》教学研究课题报告.docx
- 2023-2024学年江苏省盐城市东台市一年级(下册)期末数学试卷及答案.pdf
- 基于地理模型构建的初中生空间思维能力培养策略探讨教学研究课题报告.docx
- 八、建筑行业:建筑景观设计中的文化传承与创新发展研究教学研究课题报告.docx
- 基于大数据分析的中小学生人工智能教育资源需求精准匹配策略研究教学研究课题报告.docx
- 数字化平台在小学国际理解教育评价中的应用与效果分析教学研究课题报告.docx
- 高中物理实验虚拟仿真数字资源构建与教学应用效果评价教学研究课题报告.docx
- 高中生物与地理项目式学习实践研究——以生物多样性保护政策为例教学研究课题报告.docx
- 初中跨学科课程中人工智能技术的应用与教学效果分析教学研究课题报告.docx
最近下载
- 液体伤口敷料产品技术要求标准2023版.docx VIP
- 《水利工程外观质量评定规程DB34∕T 4010-2021》知识培训.pptx VIP
- DLT741-2023年架空送电线路运行规程.docx
- 并网光伏电站项目工程现场电气二次施工方案.doc
- 英语新课标背景下:非纸笔测试在小学英语期末评价中的实践研究.pdf VIP
- 股市实战绝技汇总篇(精华).doc VIP
- 历年行情的十大牛股.doc VIP
- 安徽省六校联考暨安徽六校教育研究会2026届高三入学素质检测-物理试卷答案.docx VIP
- 基于Ansys CFX的风扇叶片双向流固耦合分析.docx VIP
- (高清版)DB1307∕T 334-2020 蛋鸡无抗养殖技术规范.pdf VIP
文档评论(0)