嵌入式系统开发环境简介

来源:互联网 发布:淘宝魔盒 编辑:程序博客网 时间:2024/06/14 20:04

构建交叉编译环境,需要将各种二进制工具程序集成为工具链,其中包括GNU的链接器(ld)、binutils、C编译器GCC和C链接器Glibc等。又是出于减小libc库大小的考虑,也可以用别的C库代替Glibc,例如,uClibc、dietlibc、和newlib。

01. binutils

      binutils是一组二进制处理工具的集合,包括链接器,汇编器和其他用于目标文件和档案的工具。binutils的主要工具介绍如下:

      >addr2line:把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息之处在给出的地址上是哪个文件以及行号。

      >ar:建立、修改、提取档案文件。档案文件是包含多个文件内容的一个大文件,其结构保证了可以恢复原始文件内容。

      >as:主要用来编译GNU C编译器GCC输出的汇编文件,产生的目标文件由链接器ld连接。

      >c++filt:链接器使用它来过滤C++和Java符号,防止重载函数冲突。

      >gprof:显示程序调用段的各种数据。

      >ld:链接器,它把一些目标和归档文件结合在一起,重定位数据,并链接符号引用。通常,建立一个新编译程序的最后一步就是调用ld。

      >nm:列出目标文件中的符号。

      >objcopy:把一种目标文件中的内容复制到领着一种类型的目标文件中。

      >objdump:显示一个或者更多目标文件的信息。使用选项来进行控制。

      >ranlib:产生归档文件索引,并将其保存到这个归档文件中。在所引种列出了归档文件各成员所定义的可充分配目标文件。

      >readelf:显示elf格式可执行文件的信息。

      >size:列出目标文件每一段的大小以及总体的大小。默认情况下,对于每个目标文件或者一个归档文件中的每个模块只产生一行输出。

      >strings:打印某个文件的可打印字符串,这些字符串的长度最少为4个字符长,也可以使用选项-n设置字符串的最小长度。这个文件对了解非文本文件很有用处。

      >strip:丢弃目标文件中的全部或者特定符号。

      >libiberty:包含许多GNU程序都会用到的函数,这些程序有getopt,obstack,strerror,strtol和stroul等。

      >libbfd:二进制文件描述库。

      >libopcodes:用来处理opcodes的库,在省城一些应用程序时也会用到它。

      >windres:一个windows资源的编译器。


二、GCC

      >Cpp:C预处理器。

      >g++:C++编译器。

      >gcc:C编译器。

      >gccbug:创建bug报告的Shell脚本。

      >gcov:分析在程序的那里做优化效果好。

      >libgcc*:gcc的运行库

      >libstdc++:标准C++库,包含许多常用函数。

      >libsupc++:提供支持C++语言的库函数。


三、Glibc

      >catchsegv:当程序发生segmentation fault时,用来建立一个堆栈跟踪。

      >gencat:建立消息列表。

      >getconf:针对文件系统的指定变量显示其系统设置值。

      >getent:从系统管理数据库获取一个条目。

      >glibcbug:建立glibc的bug报告并且发送到bug报告的邮件地址。

      >iconv:转化字符集。

      >iconvconfig:建立快速读取的iconv模块所使用的设置文件。

      >ldconfig:设置动态链接库的是是绑定。

      >ldd:列出每个程序或者命令需要的共享库。

      >lddlibc4:辅助ldd操作目标文件。

      >locale:是一个Perl程序,可以告诉编译器打开或关闭内建的locale支持。

      >localedef:编译locale便准。

      >nscd:提供对常用名称设备调用的缓存的守护进程。

      >nscd_nischeck:检查在进行NIS+侦察时是否需要安全模式。

      >pcprofiledump:打印PC profling产生的信息。

      >pt_chown:是一个辅助程序,帮助grantpt设置子虚拟终端的属主、用户组和读写权限。

      >rpcgen:产生实现RPC协议的C代码。

      >rpcinfo:对RPC服务器产生一个RPC呼叫。

      >sln:用来创建符号链接。由于它本身是静态连接的,在动态链接不起作用时,sln仍然可以建立符号链接。

      >sprof:读取并显示共享目标的特征描述数据。

      >tzselect:对用户提出关于当前位置的问题,并输出时区信息到标准输出。

      >xtrace:通过打印当前执行的函数跟踪程序执行情况。

      >zdump:显示失去。

      >zic:时区编辑器。

      >ld.so:帮助动态链接库的执行。

      >libBrokenLocale:帮助程序处理破损locale,如Mozilla。

      >libSegFault:处理segmentaion fault信号,试图捕捉segfaults。

      >libanl:异步名称查询库。

      >libbsd-compat:为了在Linux下执行一些BSD程序,libbsd-compat提供了必要的可移植性。

      >libc:主要的C库--常用函数的集成。

      >libcrypt:加密编码库。

      >libdl:动动态链接接口。

      >libieee:IEEE浮点运算库。

      >libm:数学函数库。

      >libmcheck:包括了启动时需要的代码。

      >libmemusage:帮助memusage搜集程序运行时内存占用的信息。

      >libnsl:网络服务库。

      >libnss*:名称服务切换库,包含了解释主机名、用户名、组名、别名、服务和协议等的函数。

      >libpcprofile:帮助内核跟踪函数,源码行和命令中CPU的使用时间。

      >libpthread:POSIX线程库。

      >libresolv:创建、发送及解释到互联网域名服务器的数据包。

      >librpcsvc:提供RPC的其他服务。

      >librt:提供了大部分的POSIX.lb实时扩展的接口。

      >libthread_db:对建立多线程程序的调试很有用。

      >libutil:包含了在很多不同的UNIX程序中使用的“标准”函数。

      >

      >

      >





原创粉丝点击