工具链简述

2019-07-12 21:58发布

    工具链软件包括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等段连接在一起,而连接脚本告诉链接器从什么地址开始放置这些段。