1 . 总括 本文分三部分来介绍mips的工具链,首先工具链的总括,其次是每个工具链的简介,最后是各工具链的实际应用举例。 我们的项目使用的工具链就如图1所示, 声明,本文所述的内容实乃GNU工具链的九牛之一毛, 日后会陆续更新。
图1 2. 工具链简介
下边就以列表的方式,对每一个工具链的作用进行介绍,在下一章进行实例演示。
mips-linux-gnu-addr2line :
把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名,
它就会使用这个可执行文件的调试信息指出在给出的地址上是哪个文件以及行号。
mips-linux-gnu-gcc:
符合ISO标准的C编译器, 这个大家都在用,不再赘述。
mips-linux-gnu-objcopy:
把一种目标文件中的内容复制到另一种类型的目标文件中。
mips-linux-gnu-ar:
建立、修改、提取归档文件。归档文件是包含多个文件内容的一个大文件,其结构
保证了可以恢复原始文件内容。
mips-linux-gnu-gcov:
gcov是一个保险测试工具。当构建一个程序时,gcov会监视一个程序的执行,并且会标识出执行了哪一行源码,哪一行没有执行。
mips-linux-gnu-objdump:
显示一个或者更多目标文件的信息。使用选项来控制其显示的信息。它所显示的信息通常只有编写编译工具的人才感兴趣。
mips-linux-gnu-as:
是 GNU 汇编器,主要用来编译 GNU C 编译器 gcc 输出的汇编文件,它将汇编代码转换成二进制代码,并存放到一个object 文件中,该目标文件将由连接器 ld 连接
mips-linux-gnu-gdb:
GNU调试器。允许调试用C\C++和其他语言编写的应用程序。它的基本运行方式是在shell环境下用命令方式进行调试程序和显示数据。如果加上一些图形前端(如DDD等软件),则可以在一个更方便的图形环境下调试程序
mips-linux-gnu-ranlib:
产生归档文件索引,并将其保存到这个归档文件中。在索引中列出了归档文件各成员所定义的可重分配目标文件。
mips-linux-gnu-c++:
标准的C++编译器。
mips-linux-gnu-gdbtui:
GDB调试器的文本用户界面。
mips-linux-gnu-readelf:
显示 elf 格式可执行文件的信息
mips-linux-gnu-c++filt:
解码 C++ 符号名,连接器使用它来过滤 C++ 和 Java 符号,防止重载函数冲突。
mips-linux-gnu-gprof:
显示程序调用段的各种数据, 包括时间和次数等。
mips-linux-gnu-size:
列出目标文件每一段的大小以及总体的大小。默认情况下,对于每个目标文件或者一个归档文件中的每个模块只产生一行输出。
mips-linux-gnu-cpp:
GNU预处理器,主要用于扩展用户源程序的头文件和宏定义。cpp是GNU C编译器的预处理器。cpp是一个宏指令处理器,GNU C编译器在编译前自动使用cpp对用户程序进行转换。cpp之所以被称为宏指令处理器是因为它允许用户定义宏指令(长结构的简写)。
mips-linux-gnu-ld:
GNU链接器,主要用于确定相对地址,把多个object文件、起始代码段、库等链接起来,并最终形成一个可执行文件。
mips-linux-gnu-strings:
打印某个文件的可打印字符串,这些字符串最少 4 个字符长,也可以使用选项 -n 设置字符串的最小长度。默认情况下,它只打印目标文件初始化和可加载段中的可打印字符;对于其它类型的文件它打印整个文件的可打印字符,这个程序对于了解非文本文件的内容很有帮助。
mips-linux-gnu-g++:
基本符合ISO标准的C++编译器。
mips-linux-gnu-nm:
列出object文件中的符号
mips-linux-gnu-strip:
丢弃目标文件中的全部或者特定符号。
3. 工具使用举例:
对于GNU工具链中的GCC, G++, C++等不再举例。
mips-linux-gnu-ar:
ar 用于建立、修改、提取归档文件,一个归档文件,是包含多个被包含文件的单个文件(也可以认为归档文件是一个库文件)。
被包含的原始文件的内容、权限、时间戳、所有者等属性都保存在归档文件中,并且在提取之后可以还原
主要参数:
r - replace existing or insert new file(s) into the archive
v - be verbose
生成归档文件的方法:
Mips-linux-gnu-ar –rv libtest.a inputa.o inputb.o
|