as

as命令GNU组织推出的一款汇编语言编译器,它支持多种不同类型的处理器。

语法

as(选项)(参数)

选项

-ac:忽略失败条件;
-ad:忽略调试指令;
-ah:包括高级源;
-al:包括装配;
-am:包括宏扩展;
-an:忽略形式处理;
-as:包括符号;
=file:设置列出文件的名字;
--alternate:以交互宏模式开始;
-f:跳过空白和注释预处理;
-g:产生调试信息;
-J:对于有符号溢出不显示警告信息;
-L:在符号表中保留本地符号;
-o:指定要生成的目标文件;
--statistics:打印汇编所用的最大空间和总时间。

参数

汇编文件:指定要汇编的源文件。

gcov

gcov命令是一款测试程序的代码覆盖率的工具。

语法

gcov(选项)(参数)

选项

-h:显示帮助信息;
-v:显示版本信息;
-a:输出所有的基本块的执行计数;
-n:并创建输出文件。

参数

V语言文件:C语言源代码文件。

ld

ld命令是GNU的连接器,将目标文件连接为可执行程序。

语法

ld(选项)(参数)

选项

-o:指定输出文件名;
-e:指定程序的入口符号。

参数

目标文件:指定需要连接的目标文件。

nm

nm命令被用于显示二进制目标文件的符号表。

语法

nm(选项)(参数)

选项

-A:每个符号前显示文件名;
-D:显示动态符号;
-g:仅显示外部符号;
-r:反序显示符号表。

参数

目标文件:二进制目标文件,通常是库文件和可执行文件。

ldd

ldd命令用于打印程序或者库文件所依赖的共享库列表。

语法

ldd(选项)(参数)

选项

--version:打印指令版本号;
-v:详细信息模式,打印所有相关信息;
-u:打印未使用的直接依赖;
-d:执行重定位和报告任何丢失的对象;
-r:执行数据对象和函数的重定位,并且报告任何丢失的对象和函数;
--help:显示帮助信息。

参数

文件:指定可执行程序或者文库。

其他介绍

首先ldd不是一个可执行程序,而只是一个shell脚本

ldd能够显示可执行模块的dependency,其原理是通过设置一系列的环境变量,如下:LD_TRACE_LOADED_OBJECTS、LD_WARN、LD_BIND_NOW、LD_LIBRARY_VERSION、LD_VERBOSE等。当LD_TRACE_LOADED_OBJECTS环境变量不为空时,任何可执行程序在运行时,它都会只显示模块的dependency,而程序并不真正执行。要不你可以在shell终端测试一下,如下:

export LD_TRACE_LOADED_OBJECTS=1

再执行任何的程序,如ls等,看看程序的运行结果。

ldd显示可执行模块的dependency的工作原理,其实质是通过ld-linux.so(elf动态库的装载器)来实现的。我们知道,ld-linux.so模块会先于executable模块程序工作,并获得控制权,因此当上述的那些环境变量被设置时,ld-linux.so选择了显示可执行模块的dependency。

实际上可以直接执行ld-linux.so模块,如:/lib/ld-linux.so.2 --list program(这相当于ldd program)

make

make命令是GNU的工程化编译工具,用于编译众多相互关联的源代码问价,以实现工程化的管理,提高开发效率。

语法

make(选项)(参数)

选项

-f:指定“makefile”文件;
-i:忽略命令执行返回的出错信息;
-s:沉默模式,在执行之前不输出相应的命令行信息;
-r:禁止使用build-in规则;
-n:非执行模式,输出所有执行命令,但并不执行;
-t:更新目标文件;
-q:make操作将根据目标文件是否已经更新返回"0"或非"0"的状态信息;
-p:输出所有宏定义和目标文件描述;
-d:Debug模式,输出有关文件和检测时间的详细信息。

Linux下常用选项与Unix系统中稍有不同,下面是不同的部分:

-c dir:在读取 makefile 之前改变到指定的目录dir;
-I dir:当包含其他 makefile文件时,利用该选项指定搜索目录;
-h:help文挡,显示所有的make选项;
-w:在处理 makefile 之前和之后,都显示工作目录。

参数

目标:指定编译目标。

知识扩展

无论是在linux 还是在Unix环境 中,make都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和 makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。

而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那对程序员 来说简直就是一场灾难。而make工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。

因此,有效的利用make和 makefile工具可以大大提高项目开发的效率。同时掌握make和makefile之后,您也不会再面对着Linux下的应用软件手足无措了。

perl

perl命令是perl语言解释器,负责解释执行perl语言程序。

语法

perl(选项)(参数)

选项

-w:输出有用的警告信息;
-U:允许不安全的操作;
-c:仅检查文件的语法;
-d:在调试下运行脚本程序。

参数

文件:要运行的perl脚本程序。

mktemp

mktemp命令被用来创建临时文件供shell脚本使用。

语法

mktemp(选项)(参数)

选项

-q:执行时若发生错误,不会显示任何信息;
-u:暂存文件会在mktemp结束前先行删除;
-d:创建一个目录而非文件。

参数

文件:指定创建的临时文件。

protoize

protoize命令属于gcc套件,用于为C语言源代码文件添加函数原型,将GNU-C代码转换为ANSI-C代码。

语法

protoize(选项)(参数)

选项

-d:设置需要转换代码的目录;
-x:转换代码时排除的文件。

参数

文件:需要转换代码的C语言源文件。