linux library


静态库

查看静态库对象

$ar -tv libeasy_http_server.a 
rw-rw-r-- 59881/59881 2640480 May 28 16:56 2018 http_server_base.o
rw-rw-r-- 59881/59881 907200 May 29 13:29 2018 http_server_base_main.o
rw-rw-r-- 59881/59881 1632424 May 28 16:56 2018 async.o
rw-rw-r-- 59881/59881 2282032 May 28 16:56 2018 future_engine.o
rw-rw-r-- 59881/59881 1691120 May 28 16:56 2018 future.o

创建静态库: ar -rcs test.a *.o
查看静态库: ar -tv test.a
解压静态库: ar -x test.a
查看程序依赖态库: readelf -a xxx|grep library
看面交叉程序hello执行依赖于两态库
rebi@ubuntu:~/test armnonelinuxgnueabireadelfahello|grep"library"0x0000000(NEEDED)Sharedlibrary:[libgccs.so.]0x0000000(NEEDED)Sharedlibrary:[libc.so.]rebi@ubuntu: /test a r m − n o n e − l i n u x − g n u e a b i − r e a d e l f − a h e l l o | g r e p " l i b r a r y " 0 x 0000000 依 ( N E E D E D ) S h a r e d l i b r a r y : [ l i b g c c s . s o . 依 ] 0 x 0000000 依 ( N E E D E D ) S h a r e d l i b r a r y : [ l i b c . s o . 陆 ] r e b i @ u b u n t u :   / t e s t
readelf -l hello

查看是否是fPIC编译

readelf --relocs foo.o | egrep '(GOT|PLT|JU?MP_SLOT)'

上句大多数时候(和平台有关)可以正确判断是否是以fPIC选项编译的,如果输出为空,基本可以表明不是以fPIC选项编译的,若有输出,基本上表明是以fPIC选项编译的。
另外,由于静态库是多个目标文件的打包,所以最好把静态库解包之后再对每个目标文件进行判断,这样比较准确。

ref: http://www.cnblogs.com/welhzh/p/4858139.html

查看库中的符号

nm 查看 .o, .a, *.so中的符号

参数

  • -A 在每个符号信息的前面打印所在对象文件名称;
  • -C 输出demangle过了的符号名称;
  • -D 打印动态符号;
  • -l 使用对象文件中的调试信息打印出所在源文件及行号;
  • -n 按照地址/符号值来排序;
  • -u 打印出那些未定义的符号;

符号类型

  • A 该符号的值在今后的链接中将不再改变;
  • B 该符号放在BSS段中,通常是那些未初始化的全局变量;
  • D 该符号放在普通的数据段中,通常是那些已经初始化的全局变量;
  • T 该符号放在代码段中,通常是那些全局非静态函数;
  • U 该符号未定义过,需要自其他对象文件中链接进来;
  • W 未明确指定的弱链接符号;同链接的其他对象文件中有它的定义就用上,否则就用一个系统特别指定的默认值。
  • 将C++源程序标识符(original C++ source identifier)转换成C++ ABI标识符(C++ ABI identifier)的过程称为mangle;相反的过程称为demangle
  • -l 时,必须要对象文件中带有符号调式信息(编译的时候加 -g )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值