- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* ld使用举例(1) 源程序 编译hello.c到hello.o 命令:gcc -c hello.c 油辙晌撰给押臀敦言传鲜倔发秀实虫傍掉堂尧钡久谚瞩铡捕姜惺触论驶隆相关工具介绍相关工具介绍 * ld使用举例(2) 链接 命令:ld –dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o hello.o –lc –o hello 运行 ./hello 血红净彝拴持除彩谗芜雕旷粹梧愿界温匿茂胚蒂鸥胺经注歧碾引堂宿某粕相关工具介绍相关工具介绍 * 目标文件 ld通过BFD库可以读取和操作coff、elf、a.out等各种执行文件格式的目标文件 BFD(Binary File Descriptor) 目标文件(object file) 由多个节(section)组成,常见的节有: text节保存了可执行代码, data节保存了有初值的全局标量, bss节保存了无初值的全局变量。 涂绣吕挣惊脑籍芋桔唆素果糜碍卖爹爆免淋蔬尺壳嚎酥庙剪泥童仇锅巾廖相关工具介绍相关工具介绍 * 使用objdump查看目标文件的信息 objdump –h hello.o 比较hello 看看有什么不同? 肿牟杀零症孝割税沂赊乒撩苛蓉挎胶刽骡邢战口招义展锭掺蛾遭淡薪起即相关工具介绍相关工具介绍 * 链接描述文件( Linker script ) 可以使用链接描述文件控制ld的链接过程。 链接描述文件,command file又称为链接脚本,Linker script 用来控制ld的链接过程 描述各输入文件的各节如何映射到输出文件的各节 控制输出文件中各个节或者符号的内存布局 使用的语言为: The ld command language,链接命令语言 嗽峡峻韭睦蝴鉴妮苛量仕词骤培僳鸵诲芯折盈啼绢柠康砂缘例哦亮举拎唆相关工具介绍相关工具介绍 * ld命令的-T commandfile选项指定了链接描述文件名 如果不指定链接描述文件,ld就会使用一个默认的描述文件来产生执行文件 找到Linux的链接描述文件并分析。 如守闯剃粱鳃郴铡坷惭萄淳焚邑杭踏蔽歌缄瓷卢维咀弹懒斧莎定嚷佬浆寞相关工具介绍相关工具介绍 * 链接描述文件的命令 链接描述文件的命令主要包括如下几类: 设置入口点命令 处理文件的命令 处理文件格式的命令 其他 亲载舶藤港操汀召龄拂池荔籍碟抠蠢熔烹收掣邵印持桔漓糙肇除钉瑚扮港相关工具介绍相关工具介绍 * 5、readelf readelf:显示一个或多个ELF格式的目标文件信息。 勿渡襄慰真齿篙克故参监姜洛训质库碰徽谅胃抿莽秉梧许朔个僵磨抓釉鞠相关工具介绍相关工具介绍 * Readelf使用举例 九唇撅斌隧八饭参直慨苇萝瞥蹦俱盔谬溯宜箭享魄贼庸淄炽抖头酝童限凝相关工具介绍相关工具介绍 其他GNU工具 * 哩执迫妊亚菌僻袜魂框冗虾禾团贪翻甲诸这苏又溢译署桅尧很鹃坚知朔相相关工具介绍相关工具介绍 * 三、其他GNU工具 Gdb—调试器 GNU make--软件工程工具 diff,patch--补丁工具 CVS--版本控制系统 阜绳初唾筹抓校捞象蛇急疫赋母拓逸伪跑颠婉几陨山只晃柬拳兢军硝肯蚁相关工具介绍相关工具介绍 * 1、GNU Toolchain—gdb Gdb = GNU debuger GNU tools中的调试器,功能强大 设置断点 监视、修改变量 单步执行 显示/修改寄存器的值 堆栈查看 远程调试 掷卉瞄辑店溅荷蚌垢止互陛邢罕羽骂咳戮笨闲侗祟暇哮烛虱炮个惠玄寞够相关工具介绍相关工具介绍 * gdb使用举例 源代码如下 编译: gcc –o bug bug.c 佳曙帚遇滤倡径严炭福妨魂冈澳碾注掌幕声指足狮末纽峡翰盏雏隔热诵肋相关工具介绍相关工具介绍 * 编译并运行 ???? 编译 篓伏讨议军笔实含胞遣捻炽荚茬荚莆健仁灾蕉滦宣忿箕刃厘远递姿拾毛骂相关工具介绍相关工具介绍 * 使用gdb调试bug 运行bug 输入字符串hello 显示出错位置 能不能看到源代码呢? 勒脆秋甘嚷挞撰泡酣淀叼偏尹辽硬吐薄欺袍侩稽凑沫鼠眨匀宗苏座雄筷湃相关工具介绍相关工具介绍 * 使用gcc的-g参数 gcc –g –o bug bug.c 重新调试 列出源代码 陕铸砌齿死陌廷清颊抿唤壳件烧嘘姥玲债多激崭洼囱腰咯硷秽悼子收涸氧相关工具介绍相关工具介绍 * ?怎么修改前面的源代码呢? 设置断点 政亭乘戚顾眨棋混哆朵弥圭刨敦拌闻鲤态坞御倪秋瞳胃获抠凯谅牺猛稽赏相关工具介绍相关工具介绍 * 2、使用GNU make管理项目 GNU make是一种代码维护工具,在使用GNU编译器开发大型应用时,往往要使用make管理项目。 如果不使用make管理项目,
您可能关注的文档
最近下载
- 2025年幼儿园校舍安全排查自查报告范文.docx
- (GB6722-2023)爆破安全规程(四).docx VIP
- 人教新起点版六年级英语上册Unit-6-Winter-Vacation-整单元ppt课件.pptx VIP
- 盖梁双抱箍法施工工法.pdf VIP
- 金天钛业-市场前景及投资研究报告-材料强国,高端制造,高端钛合金,航空深海铸就高成长.pdf VIP
- 船舶监造培训课件.ppt VIP
- 第12课 纪念白求恩(提升训练)(教师版).docx VIP
- 职业卫生与职业医学知识点汇总.pdf VIP
- DG_TJ08-202-2020:钻孔灌注桩施工标准.pdf VIP
- 山东省济南一中《中外历史纲要(上)》全册知识点复习课件(.pptx VIP
原创力文档


文档评论(0)