Linux终端命令-程序文件相关命令(1)

一 Linux下相关的命令

命令语法命令示例说明
file

file [-beLvz][-f <名称文件>]

[-m <魔法数字文件>...][文件或目录...]

file foobar.o

file /bin/bash

查看文件信息,辨识文件类型
objdumpobjdump [选项] 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  将一个二进制文件作为目标文件的一个段
readelfreadelf <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
显示对象文件、可执行文件以及对象文件库里的符号信息。
stripstrip [-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从备存文件中取出成员文件

catcat [选项] [文件]...cat /proc/21963/maps

cat主要的三大功能:

1.显示文件:cat file

2.从键盘创建一个文件:cat > filename

3.将几个文件合为一个文件: cat file1 file2 > file

cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。

grepgrep [option(s)] pattern [file(s)] grep 在一个或多个文件里面查找与模式字符串(pattern)匹配的行,并将搜索结果打印出来,不会修改原文件内容。
lddldd [option(s)]  [file]ldd obj查看一个程序主模块或一个共享库依赖于哪些共享库
ldld [参数选项]

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的链接器,将目标文件链接进可执行程序

ldconfigldconfig [必要参数][选择参数]ldconfig -n shared_library_directory

-n只处理在命令行中指定的文件

总结:ldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享,还需运行动态链接库的管理命令--ldconfig。
ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.
缓存文件默认为 /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.

linux下的共享库机制采用了类似于高速缓存的机制,将库信息保存在/etc/ld.so.cache里边。
程序连接的时候首先从这个文件里边查找,然后再到ld.so.conf的路径里边去详细找.这就是为什么修改了ld.so.conf要重新运行一下ldconfig的原因
补充一点,ldconfig在/sbin里面。

lsls [选项] [目录]ls -l /lib/libc*

-a 显示目标目录中包含隐藏文件在内的所有文件及子目录

-l 以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名、文件类型、权限模式、硬连接数、所有者、组、文件大小和最后修改时间等。

总结:主要用于显示目录内容(文件属性和权限)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值