9159金沙游艺场-奥门金沙游艺场-[欢迎您]

9159金沙游艺场为您呈现最新的面貌!,目前注册送体验金,欢迎您将成为影视娱乐行业新的风向标,是亚洲的优质娱乐先锋。

ldd命令学习

日期:2019-10-13编辑作者:前端

ldd命令用来体现可试行程序的dependency,
sh-# ldd ./test_main
        libc.so.6 => /lib/libc.so.6 (0x40113000)
        /lib/ld-linux.so.3 (0x40022000)
sh-#

sh-# ldd -d ./test_main
        libc.so.6 => /lib/libc.so.6 (0x4011a000)
        /lib/ld-linux.so.3 (0x400f4000)
sh-#

sh-# ldd -r ./test_main
        libc.so.6 => /lib/libc.so.6 (0x401d4000)
        /lib/ld-linux.so.3 (0x400fb000)
sh-#

sh-# ldd -v ./test_main
        libc.so.6 => /lib/libc.so.6 (0x4009d000)
        /lib/ld-linux.so.3 (0x40077000)

        Version information:
        ./test_main:
                libc.so.6 (GLIBC_2.4) => /lib/libc.so.6
        /lib/libc.so.6:
                ld-linux.so.3 (GLIBC_2.4) => /lib/ld-linux.so.3
                ld-linux.so.3 (GLIBC_PRIVATE) => /lib/ld-linux.so.3
sh-#

ldd命令自身不是多个可施行程序,它只是一个shell脚本,
sh-# which ldd
/usr/bin/ldd
sh-#
sh-# ldd /usr/bin/ldd
        not a dynamic executable
sh-#
sh-# ldd /bin/ln
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x40061000)
        libc.so.6 => /lib/libc.so.6 (0x400cd000)
        /lib/ld-linux.so.3 (0x4003b000)
sh-#
sh-# ldd /bin/top
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x401b6000)
        libc.so.6 => /lib/libc.so.6 (0x401c9000)
        /lib/ld-linux.so.3 (0x40013000)
sh-#

sh-# ls -lh /lib/libc.so.6
lrwxrwxrwx 1 root root 14 Nov  6 08:28 /lib/libc.so.6 -> libc-2.12.2.so
sh-# ls -lh /lib/libc-2.12.2.so
-rwxr-xr-x 1 root root 1.2M Nov  6 08:28 /lib/libc-2.12.2.so
sh-#

sh-# ls -lh /lib/ld-linux.so.3
lrwxrwxrwx 1 root root 12 Nov  6 08:28 /lib/ld-linux.so.3 -> ld-2.12.2.so
sh-# ls -lh /lib/ld-2.12.2.so
-rwxr-xr-x 1 root root 120K Nov  6 08:28 /lib/ld-2.12.2.so
sh-#

sh-# ./test_main &
31631
sh-#
<xulin>test_main

sh-#
sh-# ps aux | grep test_main
root      1304  0.0  0.1  1728  544 ?        S+  12:13  0:00 grep test_main
root      2324  0.0  0.1  1460  324 ?        S+  11:22  0:00 ./test_main
root    31631  0.0  0.1  1460  324 ?        S+  12:10  0:00 ./test_main
sh-#

ldd命令的做事原理是经过安装有些情形变量来兑现的,那一个碰到变量包罗:
LD_TRACE_LOADED_ONJECTS、LD_WARN、LD_DEBUG、LD_VERBOSE、...
举个例子暗中认可景况下实行ldd命令就能够设置LD_TRACE_LOADED_ONJECTS,所以就会查看各类可实行程序的dependency。
sh-# ldd ./test_main
        libc.so.6 => /lib/libc.so.6 (0x400e7000)
        /lib/ld-linux.so.3 (0x40068000)
sh-#

可以手动设置那些碰着变量,然后在施行test_main程序,
sh-# export LD_TRACE_LOADED_OBJECTS=1
sh-# ./test_main
        libc.so.6 => /lib/libc.so.6 (0x400ca000)
        /lib/ld-linux.so.3 (0x400a4000)
sh-#

动用unset命令将以此情状变量删除,就可以恢复生机原状了,
sh-# unset  LD_TRACE_LOADED_OBJECTS
sh-# ./test_main &
26003
sh-#
<xulin>test_main

sh-#

ldd命令工作原理其实质上是由此ld-linux.so来实现的,
ld-linux.so会先于可实践程序职业并赢得调控权。
其实可以一直运用ld-linux.so来查看可施行程序的分享库注重关系。
sh-# /lib/ld-linux.so.3 --list ./test_main
        libc.so.6 => /lib/libc.so.6 (0x40204000)
        /lib/ld-linux.so.3 (0x4005a000)
sh-#
sh-# ldd ./test_main
        libc.so.6 => /lib/libc.so.6 (0x40180000)
        /lib/ld-linux.so.3 (0x40077000)
sh-#

能够检验将libc.so.6删除掉,再来看是否足以施行test_main那一个顺序。
透过认可开掘,/lib/所在的文件系统为只读文件系统,所以无法张开删减操作。

 

图片 1

本文由9159金沙游艺场-奥门金沙游艺场-[欢迎您]发布于前端,转载请注明出处:ldd命令学习

关键词:

18升级到内核版本29159金沙游艺场

由于要编译X86平台上的linux模块,原操作系统上面没有配备内核源代码,所以无法编译内核,更不能进行内核模块的实...

详细>>

Linux FIFO学习

FIFO,又称作命名管道(namedpipe),它是Linux系统中用于进程间通信的一种方法。 FIFO和pipe的区别在于: FIFO在文件系统中...

详细>>

Linux系统超过2T磁盘格式化

Linux系统超过2T磁盘格式化 查看系统信息 [root@localhost ~]# cat/etc/RedHat-release Red Hat EnterpriseLinux Server release 5.5 (Tikanga) [...

详细>>

parse文件的函数

#include stdio.h FILE *fopen(const char *path, const char *mode); int fclose(FILE *fp); 如果你要parse一个文件中的内容,首先必须要open这...

详细>>