nm命令

1、如何查看一个静态库中包含那些.o文件:

               ar    -t   lib_libname.a

    

# cd /usr/lib/gcc/i386-redhat-linux/4.1.2

# mkdir test           //建立一个试验目录,试验完后容易删除

# cp libstdc++.a test/libstdc++.a

# cd test

# ls

libstdc++.a

# ar -x libstdc++.a    //extract file(s) from the archive

# ls                   //所有.o文件便是从静态库libstdc++.a中释放出来的

...

atomicity.o         eh_call.o          istream-inst.o      pool_allocator.o

basic_file.o        eh_catch.o         istream.o           pure.o

bitmap_allocator.o  eh_exception.o     libstdc++.a         sstream-inst.o

c++locale.o         eh_globals.o       limits.o            stdexcept.o

codecvt_members.o   eh_personality.o   list.o              streambuf-inst.o

...

ctype.o             functexcept.o      misc-inst.o         tree.o

debug_list.o        globals_io.o       monetary_members.o  valarray-inst.o

debug.o             globals_locale.o   mt_allocator.o      vec.o

del_opnt.o          guard.o            new_handler.o       vterminate.o

...

eh_arm.o            ios.o              numeric_members.o

 

 

我们也可以使用nm命令直接查看tree.o的相关信息。

# nm -A tree.o
tree.o:00000000 T _ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base
tree.o:00000000 T _ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base
tree.o:00000000 T _ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base
tree.o:00000000 T _ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base
tree.o:00000000 T _ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_
tree.o:00000000 T _ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_
tree.o:00000000 T _ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_
tree.o:00000000 T _ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_
tree.o:00000000 T _ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_
tree.o:         U __gxx_personality_v0
  

以上符号经demangle后分别与以下命令的结果相对应。

 

# nm -C tree.o

00000000 T std::_Rb_tree_decrement(std::_Rb_tree_node_base const*)

00000000 T std::_Rb_tree_decrement(std::_Rb_tree_node_base*)

00000000 T std::_Rb_tree_increment(std::_Rb_tree_node_base const*)

00000000 T std::_Rb_tree_increment(std::_Rb_tree_node_base*)

00000000 T std::_Rb_tree_black_count(std::_Rb_tree_node_base const*, std::_Rb_tree_node_base const*)

00000000 T std::_Rb_tree_rotate_left(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*&)

00000000 T std::_Rb_tree_rotate_right(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*&)

00000000 T std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)

00000000 T std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)

         U __gxx_personality_v0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值