标签: ldd

80
推荐指数
9
解决办法
5万
查看次数

如何使用libc的调试版

问题的简短版本: 如何让gdb使用libc的调试符号?

更长版本: 我正在使用gdb调试程序,我想查看有关libc使用的futex的信息.但是,在调试期间的某个时刻,我得到的输出如下:

Catchpoint 2 (call to syscall futex), 0x00007ffff772b73e in ?? () from /lib/libc.so.6
(gdb) bt
#0  0x00007ffff772b73e in ?? () from /lib/libc.so.6
#1  0x00007ffff767fb90 in ?? () from /lib/libc.so.6
#2  0x00007ffff767a4c0 in vfprintf () from /lib/libc.so.6
#3  0x00007ffff768565a in printf () from /lib/libc.so.6
....
Run Code Online (Sandbox Code Playgroud)

当我info sharedlibrary在断点处运行gdb时,我看到:

(gdb) info sharedlibrary
From                To                  Syms Read   Shared Object Library
0x00007ffff7dddaf0  0x00007ffff7df6704  Yes (*)     /lib64/ld-linux-x86-64.so.2
0x00007ffff7bc53e0  0x00007ffff7bd1388  Yes (*)     /lib/libpthread.so.0
0x00007ffff79ba190  0x00007ffff79bd7d8  Yes (*)     /lib/librt.so.1
0x00007ffff76538c0  0x00007ffff7766c60  Yes (*) …
Run Code Online (Sandbox Code Playgroud)

linux gdb libc ldd

55
推荐指数
2
解决办法
4万
查看次数

交叉编译器ldd

我创建了一个交叉编译的arm可执行文件.我想找到可执行文件的库依赖项.我正在使用ubuntu natty并安装了arm-linux-gnueabi工具链,它不包含ldd.有没有一个工具可以在linux中查看arm可执行文件库的依赖性.

linux ubuntu arm cross-compiling ldd

44
推荐指数
4
解决办法
2万
查看次数

分层ldd(1)

由于使用Gentoo,经常会在更新程序与旧版本的库链接之后发生.通常,revdep-rebuild有助于解决这个问题,但这次它依赖于python库,并且python-updater不会接受它.

是否有"分层"变体ldd向我展示了共享库依赖于哪个共享库?大多数情况下,库和可执行文件仅与少数其他共享库链接,而这些共享库又与少数几个库链接,将库依赖项转换为大型列表.我想知道我使用我升级的另一个库的新版本重建哪个依赖项.

linux linker gcc gentoo ldd

38
推荐指数
3
解决办法
2万
查看次数

什么是ld-linux.so.2和linux-gate.so.1?

当我运行时,ldd program我得到表单的输出

    linux-gate.so.1 =>  (0xb77ae000)
    libstdc++.so.6 => /lib/libstdc++.so.6 (0xb76bc000)
    libm.so.6 => /lib/libm.so.6 (0xb7691000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7674000)
    libc.so.6 => /lib/libc.so.6 (0xb74c2000)
    /lib/ld-linux.so.2 (0xb77af000)
Run Code Online (Sandbox Code Playgroud)

你能解释输出和原因,linux-gate.so.1并以ld-linux.so.2不同于其他条目的方式展示吗?他们的角色是什么?

linux linkage ldd

29
推荐指数
1
解决办法
3万
查看次数

加载共享库时出错:libboost_system.so.1.45.0:无法打开共享对象文件:没有这样的文件或目录

我正在Linux上构建C++可执行文件.可执行文件链接到一些boost库.

这是我尝试运行二进制文件时的输出:

root@yourbox:~/work/dev/c++/projects/testfgci/dist/Debug/GNU-Linux-x86$ ./testfgci 
./testfgci: error while loading shared libraries: libboost_system.so.1.45.0: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

然后我在二进制文件上运行ldd来检查依赖项:

root@yourbox:~/work/dev/c++/projects/testfgci/dist/Debug/GNU-Linux-x86$ ldd testfgci 
    linux-gate.so.1 =>  (0x00380000)
    libboost_system.so.1.45.0 => not found
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00b50000)
    libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x005f6000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x0099a000)
    libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x001b3000)
    libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0x00110000)
    /lib/ld-linux.so.2 (0x00ea2000)
Run Code Online (Sandbox Code Playgroud)

我不确定为什么找不到liboos_system.sl.1.45.0 SO.我今天早些时候成功地建造了它.谁能解释一下?

c++ linux ubuntu ld ldd

24
推荐指数
3
解决办法
5万
查看次数

ldd相当于android

我有一个libTest.so,在某些设备上没有加载.logcat绝对没用.使用arm-linux-androideabi-readelf.exe -d libTest.so我能够看到libTest.so需要的所有必需的库.我将它们全部拉进我本地PC上的同一个文件夹中.

如何找出哪些符号丢失以及哪个库?我只有NDK的标准工具集(nm,readelf,objdump等).哪个工具以及如何使用它以便它解析我的libTest.so和所有依赖的libs并告诉我哪个符号阻止我的lib加载到目标设备上.

android android-ndk ldd readelf

21
推荐指数
3
解决办法
1万
查看次数

macOS 上的“ldd -r”等效项

我正在尝试让我的软件在 macOS 上可用,在我的工具链中,我使用该ldd -r MyModel.so命令来验证一切是否顺利,但我确实无法在 macOS 上找到具有相同行为的等效命令。

\n

otoolnm似乎是两个方向,但是他们的哪个选项提供了 的行为ldd -r?还有其他工具可以用于此目的吗?

\n

macos otool ldd nm

21
推荐指数
1
解决办法
1万
查看次数

ldd和objdump有什么区别?

我正在运行这两个命令,我得到不同的输出:

$ ldd `which ls`
    linux-gate.so.1 =>  (0x00db3000)
    libselinux.so.1 => /lib/i386-linux-gnu/libselinux.so.1 (0x00ba2000)
    librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0x007bf000)
    libacl.so.1 => /lib/i386-linux-gnu/libacl.so.1 (0x004ce000)
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00110000)
    libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0x00398000)
    /lib/ld-linux.so.2 (0x00dea000)
    libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0x00a83000)
    libattr.so.1 => /lib/i386-linux-gnu/libattr.so.1 (0x00d3d000)
Run Code Online (Sandbox Code Playgroud)

然后

objdump -x `which ls` | grep NEEDED
  NEEDED               libselinux.so.1
  NEEDED               librt.so.1
  NEEDED               libacl.so.1
  NEEDED               libc.so.6
Run Code Online (Sandbox Code Playgroud)

那是怎么回事?我以为他们都给了库依赖?我关心的原因是我怀疑ldd是正确的,但我正在使用ARM上的linux,那里没有我能说的ldd ......

linux objdump ldd

18
推荐指数
1
解决办法
6131
查看次数

如何解释ldd程序的输出?

[root@wdctc1281 bin]#  ldd node
        linux-vdso.so.1 =>  (0x00007fffd33f2000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f70f7855000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f70f764d000)
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f70f7345000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f70f7043000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f70f6e2d000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f70f6c10000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f70f684f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f70f7a61000)
Run Code Online (Sandbox Code Playgroud)

第一行和最后一行是什么意思?它们看起来不像正常

xxxx.so => /lib64/xxxxx.so (0xxxxxxxxxxxxxxxxxxxx)
Run Code Online (Sandbox Code Playgroud)

格式.

linux gnu binutils ldd

18
推荐指数
2
解决办法
4935
查看次数