工具链简述

    工具链软件包括binutils、gcc、glibc、gdb等。

    binutils:二进制程序处理工具,包含链接器、汇编器等程序处理工具。

    gcc:GNU Compiler Collection,编译器,对于C/C++语言的完整支持,需要支持glibc库。

    glibc:是应用程序编程的函数库软件包,可以编译生成静态库和共享库。完整的GCC需要支持glibc。

    gdb:调试工具,可以读取可执行程序中的符号表,对程序进行源码调试。


    默认情况下,GNU编译器生成的目标文件格式为elf格式。

    elf文件由若干段(section)组成。

    C:.text(正文段)包含程序的指令代码

       .data(数据段)包含固定的数据,如常量、字符串

       .bss(未初始化数据段)未初始化变量、数组等。

    C++:.fini(析构函数代码)

         .init(构造函数代码)

    链接生成的elf格式文件还不能直接下载到目标平台上执行,可通过objcopy工具生成最终二进制文件。

    链接器的任务就是将多个目标文件的.text、.data、.bss等段连接在一起,而连接脚本告诉链接器从什么地址开始放置这些段。

    

    

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. GCC编译C语言程序的步骤及每一步的主要工作: (1)预处理:处理源代码中的预处理指令(如#include、宏定义等),生成一个新的C程序。 (2)编译:将预处理后的C程序编译成汇编代码。 (3)汇编:将汇编代码转换成机器码。 (4)接:将编译后的目标文件与库文件进行接,生成最终的可执行文件。 2. ELF格式文件与BIN格式文件的主要区别是什么? ELF(Executable and Linkable Format)和BIN(Binary)是两种不同的可执行文件格式。主要区别如下: (1)内容:ELF文件包含程序代码、数据和符号表等信息,而BIN文件只包含程序代码。 (2)可读性:ELF文件是一种结构化的可执行文件格式,可以被动态接器和调试器等工具解析和处理,因此具有一定的可读性;而BIN文件是一种简单的二进制文件格式,只包含机器指令,不具备可读性。 (3)兼容性:ELF文件通常用于Linux和其他类Unix系统,而BIN文件则通常用于MS-DOS和Windows系统。 总之,ELF文件比BIN文件更加灵活、可读性更高,但也需要更多的系统资源来解析和处理。 3. 交叉编译工具中strip及objdump工具的主要用途是什么? strip工具用于从可执行文件中删除符号表和调试信息等,以减小文件体积和保护程序代码,可以提高程序的安全性。 objdump工具用于查看可执行文件或者目标文件的汇编代码、符号表、段信息等,可以用于调试和分析程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值