问题标签 [ldd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
12485 浏览

linux - 在没有 root 权限的情况下更新 ldconfig 缓存

我在本地安装了几个二进制文件和库,因为我没有 root 访问权限。

一些程序需要在运行时动态链接到非标准位置的共享库。

执行时,程序返回:

我已经添加了库的路径$LD_LIBRARY_PATH,但是没有 root 访问权限我无法更新ldconfig缓存...

有用户特定的/etc/ld.so.cache吗?

或者更一般地说,是否可以用用户配置文件“屏蔽”系统配置文件?

0 投票
3 回答
8528 浏览

linker - 可执行文件找不到动态链接的 mkl 库,但 ldd 可以

我有一个与 mkl 库动态链接的代码。运行代码时,它报告找不到 mkl。

但是当我使用 ldd 检查可执行文件中的动态链接库时,它显示找到了 mkl 库

知道有什么问题吗?

输出自readelf -l ./bmdl

更多调试

似乎对一个人LD_DEBUG跑步没有影响./bmdl

我刚刚意识到旧的bmdl有一个“setgid”标志,而我的新版本没有。也许这就是原因?

setgid从旧的bmdl和运行中删除了该位./bmdl并没有抱怨找不到库。现在的问题是为什么 setgid 会干扰动态链接库?

碰巧带有动态链接可执行文件的 setgid 可能会导致安全问题,并且受到 GNU glibc 的极大限制。例如,LD_LIBRARY_PATH 将被忽略。也许旧建筑以前从未工作过?!

0 投票
2 回答
26380 浏览

binary - 不能执行二进制文件

我有一个二进制可执行文件,它是我下载的学术软件包的一部分。我似乎无法让它运行,而且我无权访问源代码。我已经尝试了以下事情。有什么想法吗?

非常感谢。

0 投票
1 回答
9416 浏览

linux - ldd输出说明

有人可以向我解释 ldd 命令的输出吗?在以下示例中(在 Gentoo 系统上)

第一行是什么意思?“linux-vdso.so.1 => (0x00007fff6ffff000)” => 不指向任何共享库文件。

0 投票
1 回答
600 浏览

c++ - C++:链接库在执行期间消失并给出段错误

我在构建图书馆时遇到问题。在 Makefile 中,我通过输入 -ltclstub8.6 告诉 g++ 我需要 tclstub8.6 并且 g++ 将其考虑在内(抱歉这些法语消息):

但是当我调用一个 tcl 函数时,会发生段错误。

事实上,如果我检查我刚刚使用 ldd -r 命令构建的库,它会显示所有外部库都包含在内,除了 tclstub8.6。

下面是 ldd -r 命令的输出信息。注意libtclstub8.6没有出现..

该列表以 libtclstub8.6 的所有未定义符号结束。

有人可以帮我解决这个问题吗?非常感谢!

0 投票
1 回答
7654 浏览

linux - 未找到 ldd 库

启动程序时出现以下错误:

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

关键是libnetcdf.so.6该库的旧版本,我已将其删除并构建了新版本。

所以当我尝试时,ldd我看到:

但是也

为什么这个旧参考?我能做些什么来解决?

0 投票
0 回答
1193 浏览

c - 列出插件中未定义的符号

通常,在开发库/应用程序时,可以使用ldd程序检查外部依赖项(链接在动态库中)和未定义的符号:

所以这个例子似乎安装了一个不兼容的libbar.so版本,它缺少bar_nullfn. 这很少发生在用于构建的机器上libfoo.so,因为链接器已经在构建阶段抱怨缺少符号。

这很好用,只要运行时链接器可以根据中的信息解析符号(或不解析)libfoo.so

不幸的是,我正在使用插件,即由主机应用程序 dlopen() 编辑的动态库。这些插件使用来自主机应用程序的函数(通过标头公开),但无法在主机上下文之外解析。自然,跑步ldd -r会给我带来很多误报

由于主机提供了这些符号(post,...),因此即使插件似乎有很多未定义的符号,也可以对插件进行 dlopen() 处理。

链接器被明确指示忽略丢失的符号,以便能够构建这样的插件。

现在我的问题是,有时这样的插件确实有一个未定义的符号,在运行时无法解决。由于在构建过程中要求链接器忽略丢失的符号,因此不会发出警告。但是当插件被加载时,会dlopen()失败,比如

ldd 给我:

目前我知道如何解决这个问题的唯一方法是迭代地修复每个丢失的符号。例如,如果我使用(不存在的)函数在我的插件中输入了两个拼写错误,psot()并且logpsot(),我启动我的主机,加载插件,发现我使用了该符号psot,修复问题,重新编译,重新启动主机/插件,才发现我还写了logpsot

我想知道是否有一种方法可以指定可用于解析符号ldd(或类似符号)的其他二进制对象。例如

0 投票
1 回答
35128 浏览

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

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

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

0 投票
1 回答
805 浏览

linux - 我怎么知道 ldd 如何解决依赖关系

对于 ldd 标识的依赖项,我如何知道它是使用二进制文件的 RPATH 还是环境的 LD_LIBRARY_PATH ?

0 投票
1 回答
1201 浏览

linux - 来自 Ocaml brew 的 Utop 引发错误

我已经使用 ocamlbrew 来安装 ocaml 和相关的实用程序。我也有一个较早的安装。如文档中所述,我使用 /opt 来安装 ocamlbrew。但是当我以普通用户身份运行 utop 时,出现错误

什么都不返回