当前位置: 首页 > news >正文

网站建设套餐内容网站模板上传

网站建设套餐内容,网站模板上传,微信引流主动被加软件,张店网站建文章目录 一、Linux编译器-gcc/g使用1.1 背景知识1.2 gcc如何完成1.3 函数库1.4 gcc选项 二、linux调试器-gdb使用2.1 背景2.2 开始使用 总结 ヾ(๑╹◡╹)#xff89; 人总要为过去的懒惰而付出代价ヾ(๑╹◡╹)#xff89; 一、Linux编译器-gcc/g使用 1.1 背景… 文章目录 一、Linux编译器-gcc/g使用1.1 背景知识1.2 gcc如何完成1.3 函数库1.4 gcc选项 二、linux调试器-gdb使用2.1 背景2.2 开始使用 总结 ヾ(๑╹◡╹) 人总要为过去的懒惰而付出代价ヾ(๑╹◡╹) 一、Linux编译器-gcc/g使用 1.1 背景知识 程序文本——机器语言二进制 预处理 进行宏替换)编译生成汇编)汇编生成机器可识别代码连接生成可执行文件或库文件) 为什么计算机只认识二进制 组成计算机的各种组件只认识二进制。 1.2 gcc如何完成 格式 gcc [选项] 要编译的文件 [选项] [目标文件] C文件gcc 文件-./a.out【g 文件-./a.out 】【因为c兼容C语言】 C文件g文件-./a.out 【如果没有g编译器安装gcc-c即可】 gcc/g 文件1 -o 文件2 —— 此时就不会生成a.out文件而是文件2 预处理(进行宏替换) 预处理功能主要包括宏替换,头文件展开,条件编译,去注释等。预处理指令是以#号开头的代码行。实例: gcc –E hello.c –o hello.i选项“-E”,该选项的作用从现在开始进行程序的翻译gcc 在预处理结束后停止编译过程。选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序 查看.i文件首先vim hello.c 然后在末行模式输入 vs hello.i 就可以进入.i文件 编译器内部都必须通过一定方式来知道你包含的头文件的所在路径 预处理完之后C语言代码还是C语言代码 编译生成汇编语言 在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc 把代码翻译成汇编语言。用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。实例: gcc –S hello.i –o hello.s【也可以直接从.c文件开始翻译到.s文件】 汇编生成机器可识别代码 汇编阶段是把编译阶段生成的“.s”文件【汇编语言】转成目标文件【可重定向二进制文件.o/.obj】“-c”就可看到汇编代码已转化为“.o”的二进制目标文件实例: gcc –c hello.s –o hello.o 【所有的包含头文件的操作本质上是想使用头文件所声明的方法例如输入输出接口等】 以上操作仅仅编译了自己写的代码【仅仅这个文件是没有办法进行运行/.hello.o】 我们代码中所需要的printf在哪里在C标准库中。 我们代码中使用了printf如何和目标的printf产生联系【链接的过程】 【ESc】【iso】 链接生成可执行文件或库文件 在成功编译之后,就进入了链接阶段。实例: gcc hello.o –o hello 【这一步就有了链接的过程就形成了可执行文件】 ldd 可执行文件【此时就可以看到所需要的库】 头文件给我们提供了可以使用的方法所有的开发环境具有语法提示本质上是头文件帮我们搜索的。【类似于我们平常写代码的头文件】 库文件给我们提供了可以使用的方法的实现以供链接形成我们自己的可执行程序。【类似于我们平常写的.c/.cpp文件】 1.3 函数库 在这里涉及到一个重要的概念:函数库 我们的C程序中并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而没有定义函数的实现,那么,是在哪里实“printf”函数的呢? 答案:系统把这些函数实现都被做到名为 libc.so.6 的库文件中去了,在没有特别指定时,gcc 会到系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到 libc.so.6 库函数中去,这样就能实现函数“printf”了,而这也就是链接的作用 函数库一般分为静态库和动态库两种 静态库是指编译链接时【静态链接】,把库文件的代码全部**加入到可执行文件中**,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为linux“.a”windows “.lib”动态库与之相反,在编译链接时【动态链接】并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。动态库一般**后缀名为linux“.so”windows.dll,**如前面所述的 libc.so.6 就是动态库。gcc 在编译时默认使用动态库。完成了链接之后,gcc 就可以生成可执行文件,如下所示。 gcc hello.o –o hellogcc默认生成的二进制程序是动态链接的这点可以通过 file 命令验证。file 链接后的可执行文件可以查看可执行文件的构成【默认情况下形成的可执行文件是动态链接的】gcc 文件 -o 可执行文件 【动态链接】 gcc 文件 -o 可执行文件 -static 【静态链接】【静态链接的可执行文件是非常大的所以我们是用默认的动态链接】静态库编译软件包yum install glibc-static 【C语言】 yum install libstdc -static【C】 静态库和动态库优缺点 动态链接库优点大家共享一个库可以节省资源 缺点如果库缺失会导致几乎所有程序失效静态链接库优点不依赖任何库程序可以独立执行 缺点浪费资源 1.4 gcc选项 -E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面-S 编译到汇编语言不进行汇编和链接-c 编译到目标代码-o 文件输出到 文件-static 此选项对生成的文件采用静态链接-g 生成调试信息。GNU 调试器可利用该信息。-shared 此选项将尽量使用动态库所以生成文件比较小但是需要系统由动态库.-O0-O1-O2-O3 编译器的优化选项的4个级别-O0表示没有优化,-O1为缺省值-O3优化级别最高-w 不生成任何警告信息。-Wall 生成所有警告信息。 gcc选项技巧 ESc,iso 二、linux调试器-gdb使用 2.1 背景 程序的发布方式有两种debug模式和release模式Linux gcc/g出来的二进制程序默认是release模式【默认生成的可执行文件是无法调试的。-g】【debug才能调试】要使用gdb调试必须在源代码生成二进制程序的时候, 加上 -g 选项 【gcc 文件 -o 可执行文件 -g】【调试的可执行文件体积会大一点因为还有调试信息】 2.2 开始使用 gdb 可执行文件 退出 ctrl d 或 quit 当编译器不支持C99可以gcc 文件 -o 可执行文件 -stdC99readelf -S 可执行文件 可以看到调试信息readelf -S 可执行文件 | grep debug【注意这里生成的是可执行文件是debug的】 可以看到debug的调试信息 调试命令 l 显示代码 list 或 l 行号显示源代码接着上次的位置往下列每次列10行。 listl 函数名列出某个函数的源代码。 r或run运行程序。【断点停止c ,到达下一个断点】 n 或 next单条执行。【逐过程】 s 或step进入函数调用 【逐语句】 break (b) 行号在某一行设置断点 break 函数名在某个函数开头设置断点 info breakb 查看断点信息。 finish执行到当前函数然后停下来等待命令 print§打印表达式的值通过表达式可以修改变量的值或者调用函数 p 变量打印变量值。 set var修改变量的值 continue(或c)从当前位置开始连续而非单步执行程序【断点到断点】 run(或r)从开始连续而非单步执行程序 delete breakpoints删除所有断点 delete breakpoints nd 序号【序号可以用info b 查看】删除序号为n的断点 disable breakpoints禁用断点 enable breakpoints启用断点 info(或i) breakpointsinfo b参看当前设置了哪些断点 display 变量名常显示跟踪查看一个变量每次停下来都显示它的值 undisplay 序号取消常显示取消对先前设置的那些变量的跟踪 until X行号跳至X行 breaktrace(或bt)查看各级函数调用及参数 infoi) locals查看当前栈帧局部变量的值 quit退出gdb 回车 可以显示上一次gdb执行的结果 总结 以上就是今天要讲的内容本文详细地介绍了Linux编译器-gcc/g的使用、linux调试器-gdb的使用希望给友友们带来帮助
http://www.huolong8.cn/news/196397/

相关文章:

  • 成都市高新区规划建设局网站许昌 网站开发
  • 怎么建设属于自己的网站兰州seo网站建设
  • 关于网页设计的教育网站设计域名 空间 网站
  • 网站开发英文什么网站做教育的比较多
  • 如何做外贸品牌网站建设全球采购网登录
  • 微信网站建设咨询做网站公司职员工资
  • 电商网站设计图徐汇网站建设推广
  • 衡水企业网站制作报价什么牛网站建设
  • 大型网站建设推荐wordpress缓存插件
  • 邗江区城乡建设局网站主题网站设计实验步骤
  • 做聚会的网站泉州网站建设报价
  • 南京建设网站企业网站 外包 版权
  • h5网站建设公司淘宝官网首页官网
  • 做刷单哪个网站找小白爱论网
  • 商业门户网站有哪些适合做网站服务器的主机
  • 合肥网站建设 k开发一个网站的步骤流程
  • 天津开发区建网站公司毕节市建设厅网站
  • 大型门户网站设计网站建设高效解决之道
  • 做3ds磁铁卡网站第一ppt网免费模板
  • 郑州网站推广怎么做做流程图用什么网站好
  • 推荐好的网站或网页asp 网站地图生成
  • 哪个网站开发培训好布吉公司做网站
  • 装潢设计是什么seo查询站长工具
  • 管理系统和网站哪个好做黄骅港金沙滩
  • 旅游网站设计代码html网站建设 吉林
  • 门户网站建设公司方案甘肃建网站
  • 网站备案要幕布中牟网络推广公司
  • 如何选择常州网站建设普象工业设计网站
  • 连江网站建设jsp与asp做的网站
  • 电商网站 费用我的长沙app