创建静态库:
创新互联是一家专业提供汝城企业网站建设,专注与网站设计制作、做网站、H5响应式网站、小程序制作等业务。10年已为汝城众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。
ar -rcs test.a *.o
查看静态库:
ar -tv test.a
解压静态库:
ar -x test.a
查看程序依赖的动态库:
readelf -a xxx|grep library
如:可以看到,下面的交叉程序hello执行依赖于如下两个动态库。
rebi@ubuntu:~/test$ arm-none-linux-gnueabi-readelf -a hello|grep "library"
0x00000001 (NEEDED) Shared library: [libgcc_s.so.1]
0x00000001 (NEEDED) Shared library: [libc.so.6]
rebi@ubuntu:~/test$
或者:readelf -l hello 即可。
nm xxx 查看符号
其中,T表示代码段,U表示在其它地方定义,所以需要确保必须在某个.o或库里被定义过。
1、cat
用于显示小文件的内容,或者在shell脚本里显示文件内容,不支持翻页。
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Jun 14 18:02:15 2019
可以显示/etc/fstab的内容,如果想显示行号,只要加上 cat -n参数即可
2、less
当文件比较大,cat查看时并不方便,因为cat不支持翻页,是一次性显示完的。
所以cat更适合在shell脚本中使用,让机器自动读取文件,而不适合人类来看。
所以当我们在看大文件时,一般会会用less命令
这个文件 /etc/man_db.conf有一百多行,我们用less来翻页查看
[root@localhost ~]# less /etc/man_db.conf
上下翻页,q键退出
3、head
如果只想看一个文件的前几行,可以用head,比如,当我们查看ip地址时,其实只关注前2行就足够了
[root@localhost ~]# ifconfig eth0
eth0: flags=4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500
inet 172.20.10.3 netmask 255.255.255.240 broadcast 172.20.10.15
inet6 240e:c0:f4be:300:e64:6e3c:b445:efab prefixlen 64 scopeid 0x0global
inet6 fe80::b7ad:e2ed:832e:99a9 prefixlen 64 scopeid 0x20link
ether 00:0c:29:84:23:62 txqueuelen 1000 (Ethernet)
RX packets 1017 bytes 130078 (127.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 729 bytes 120983 (118.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
4、tail
和head相对,tail是只显示末尾几行,比如我们想查看一个文件的更新情况,只要看最后几行就可以了
[root@localhost ~]# tail -1 /etc/fstab
/dev/mapper/centos-swap swap swap defaults 0 0
[root@localhost ~]#
tail -数字,就是查看一个文件的最后几行
tail也可以自动监测文件的更新情况,如果有更新,立即在屏幕显示,使用tail -F参数,注意,使用大写-F
5、wc
可以查看一个文件有多少行,多少单词,多少字节
[root@localhost ~]# wc /etc/fstab
19 62 504 /etc/fstab
这个文件有19行,62个单词,504个字节 更多详细的介绍可查看“Linux命令大全”。
常用的7个Linux文件内容查看命令:
1.cat由第一行开始显示文件内容
用法:
cat-A 相当于-vET的整合选项,可列出一些特殊字符而不是空白;
cat-b 列出行号,仅针对非空白行做行号显示,空白行不标行号;
cat-E 将结尾的断行字节$显示出来;
cat-n 列印出行号,连同空白行也会有行号,与-b的选项不同;
cat-T 将[tab]按键以^I显示出来;
cat-v 列出一些看不出来的特殊字符;
2.tac 由最后一行开始显示文件内容
tac-b 在行前而非行尾添加分隔标志;
tac-r 将分隔标志视作正则表达式来解析;
tac-s 使用指定字符串代替换行作为分隔标志;
3.nl 显示行号
nl-b a 无论是否为空行,均列出行号;
nl-b t 空行不列出行号;
nl-n ln 行号在荧幕的最左方显示;
nl-n rn 行号在自己栏位的最右方显示,且不加0;
nl-n rz 行号在自己栏位的最右方显示,且加0;
nl-w 行号栏位的占用的位数;
4.more 一页一页的显示文件内容
在more程序运行过程中,可以按以下键:
空白键(space):代表向下翻一页;
Enter:代表向下翻『一行』;
/字串:代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
:f:立刻显示出档名以及目前显示的行数;
q:代表立刻离开more,不再显示该文件内容。
b或[ctrl]-b:代表往回翻页,不过这动作只对文件有用,对管线无用。
5.less与more类似,但是比more更好的是,他可以往前翻页
less运行时可以输入的命令有:
空白键:向下翻动一页;
[pagedown]:向下翻动一页;
[pageup]:向上翻动一页;
/字串:向下搜寻『字串』的功能;
?字串:向上搜寻『字串』的功能;
n:重复前一个搜寻(与/或?有关!);
N:反向的重复前一个搜寻(与/或?有关!);
q:离开less这个程序;
6.head 显示前几行
语法:
head-n 后面接数字,代表显示行数;
7.tail 显示后几行
tail-n 后面接数字,代表显示行数;
tail-f 表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测;
一、可执行文件/二进制文件依赖共享库
ldd命令用来查看可执行文件依赖的共享库文件。
$ ldd --help
Usage: ldd [OPTION]... FILE...
--help print this help and exit
--version print version information and exit
-d, --data-relocs process data relocations
-r, --function-relocs process data and function relocations
-u, --unused print unused direct dependencies
-v, --verbose print all information
示例:
$ ldd helloworld
二、共享库依赖共享库关系
上面的ldd命令无法查看共享库的依赖关系,因为共享库本身并不是可执行文件,我们可以使用
objdump -x libhelloworld.so | grep NEEDED
其中,libhelloworld.so是你的库名称。
附:
readelf命令用于读取ELF Header信息