最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

Linux 动态函数库

工作和技术 crifan 1677浏览 0评论

Linux 动态函数库【ZT】

windows里面的动态函数库文件是以dll结尾的文件

linux中一般

.so 为共享库
.a为静态库
.la为libtool自动生成的一些共享库,可以用vi编辑查看,主要记录了一些配置信息。可以用如下命令查看*.la文件的格式

$file *.la

我们可以用ldd命令来得知目前该执行档共用了哪些动态函数库 :

  [root@hlchou /root]# ldd test
  libc.so.6 => /lib/libc.so.6 (0x40016000)
  /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)


共用了两个动态函式库,分别为 libc.so.6 与 ld-linux.so.2。

我们还可以透过 file 指令,来得知该执行档的相关属性,如下

  [root@hlchou /root]# file test
  test: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically
  linked (use s shared libs), not stripped

    not stripped 表示这个执行档还没有透过 strip 指令来把执行时用不到的符号、以及相关除错的资讯删除

通过strp命令可以进行压缩,

 [root@hlchou /root]# ls -l test
  -rwxr-xr-x 1 root root 11694 Oct 24 02:31 test


 经过strip後,则变为 3004 bytes

  [root@hlchou /root]# strip test
  [root@hlchou /root]# ls -l test
  -rwxr-xr-x 1 root root 3004 Oct 24 02:48 test

在 Linux 上使用动态函数库的执行档,几乎都会去呼叫 libc.so.6 与 ld-linux.so.2 这两个动态函数库,ld-linux.so.2 算是最底层的动态函式库,它本身为静态联结,主要的工作是提供基本的函式给其他的函数库,而我们最常会呼叫的 libc.so.6 则是以 ld-linux.so.2 为基础的一个架构完成的动态函数库,它几乎负责了所有我们常用的标准 C 函数库,像是我们在 Linux 下写的 Socket 程序,其中的connect()、bind()、send() …..之类的函数,都是由 libc.so.6 所提供的。

转载请注明:在路上 » Linux 动态函数库

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
79 queries in 0.183 seconds, using 22.10MB memory