一 Linux下相关的命令
命令 | 语法 | 命令示例 | 说明 |
file | file [-beLvz][-f <名称文件>] [-m <魔法数字文件>...][文件或目录...] | file foobar.o file /bin/bash | 查看文件信息,辨识文件类型 |
objdump | objdump [选项] objfile | objdump -x obj objdump -t obj objdump -h obj objdump -s -d obj objdump -x -s -d obj objdump -d obj objdump -r obj.o
| -x显示所有可用的头信息,包括符号表、重定位入口,等价于 -a -f -h -r -t -t显示文件的符号表入口 -h显示目标文件各个section的头部摘要信息 -s可以将所有段的内容以十六进制的方式打印出来; -d可以将所有包含指令的段反汇编 -r查看目标文件的重定位表 总结:查看目标文件(二进制文件)的信息 |
size | size obj.o | 查看ELF文件的代码段、数据段和BSS段的长度 | |
objcopy | 将一个二进制文件作为目标文件的一个段 | ||
readelf | readelf <option(s)> elf-file(s) | readelf -h obj.o readelf -S obj.o readelf -l obj.elf readelf -d foo.so | grep TEXTREL readelf -r Lib.so | -h查看elf文件的文件头信息 -S显示elf文件的段信息 -l显示程序头信息,描述elf文件该如何被操作系统映射到进程的虚拟空间 -d显示Dynamic Section信息 -r查看动态链接文件的重定位表 总结:显示elf文件的信息,与objdmp功能类似,但是其显示的信息更为具体,并且其不依赖BFD库 |
nm | nm[-A][-C]...File... | nm obj.o | 显示对象文件、可执行文件以及对象文件库里的符号信息。 |
strip | strip [-V][-r]...Flie... | strip obj | 通过除去绑定程序和符号调试程序使用的信息,减少扩展公共对象文件格式(XCOFF)的对象文件的大小 |
ar | ar [-dmpqrtx] [cfosSuvV] [a<成员文件>] [b<成员文件>][i<成员文件>][备存文件] [成员文件] | ar -t libc.a ar -x libc.a | -t 显示备存文件中所包含的文件 -a 删除备存文件中的成员文件 -p显示备存文件中的成员文件内容 -q将文件附加在备存文件的末端 -r将文件插入备存文件中 -x从备存文件中取出成员文件 |
cat | cat [选项] [文件]... | cat /proc/21963/maps | cat主要的三大功能: 1.显示文件:cat file 2.从键盘创建一个文件:cat > filename 3.将几个文件合为一个文件: cat file1 file2 > file cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。 |
grep | grep [option(s)] pattern [file(s)] | grep 在一个或多个文件里面查找与模式字符串(pattern)匹配的行,并将搜索结果打印出来,不会修改原文件内容。 | |
ldd | ldd [option(s)] [file] | ldd obj | 查看一个程序主模块或一个共享库依赖于哪些共享库 |
ld | ld [参数选项] | ld -rpath /home/mylib -o program.out program.o -lsomelib ld -static -e nomain -o hello hello.o ld -verbose ld -T link.script
| 使用链接器的"-rpath"选项,可以指定链接产生的目标程序的共享库查找路径 将hello.o链接成可执行文件hello 查看ld的默认链接脚本 指定脚本为链接控制脚本 -o指定输出文件名 -e指定程序入口符号 [目标文件]指定要链接的目标文件名 总结:GNU的链接器,将目标文件链接进可执行程序 |
ldconfig | ldconfig [必要参数][选择参数] | ldconfig -n shared_library_directory | -n只处理在命令行中指定的文件 总结:ldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享,还需运行动态链接库的管理命令--ldconfig。 linux下的共享库机制采用了类似于高速缓存的机制,将库信息保存在/etc/ld.so.cache里边。 |
ls | ls [选项] [目录] | ls -l /lib/libc* | -a 显示目标目录中包含隐藏文件在内的所有文件及子目录 -l 以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名、文件类型、权限模式、硬连接数、所有者、组、文件大小和最后修改时间等。 总结:主要用于显示目录内容(文件属性和权限) |