问题标签 [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.
c++ - 加载共享库时出错:libboost_system.so.1.45.0:无法打开共享对象文件:没有这样的文件或目录
我正在 Linux 上构建一个 C++ 可执行文件。可执行文件链接到一些 boost 库。
这是我尝试运行二进制文件时的输出:
然后我在二进制文件上运行 ldd 以检查依赖项:
我不确定为什么找不到 liboos_system.sl.1.45.0 SO。我今天早些时候成功地建造了它。谁能解释一下?
c++ - linux 二进制独立于共享库
我有一个 C++ 程序,它依赖于很多库(一些常见的系统库,如 libjpeg,一些未在系统范围内安装的个人库)。该程序在机器 A (Debian Squeeze) 上编译良好。我想在机器 B(Ubuntu maveric)和机器 C(Arch)上运行程序。假设两台机器 B+C 都是极少的安装。不要指望在那里找到我的程序使用的任何库,如果有的话,它们不是相同的版本。
是否有任何程序可以扫描我的程序以查找所有依赖项(使用 ldd 或其他东西)收集所有这些依赖项,并生成一个脚本来告诉二进制文件使用这些以及它在任何其他系统上附带的这些库?
谢谢 !
java - 使用 JNI 的 Java 程序在 Eclipse 之外找不到依赖的共享对象
我现在有一个在 Eclipse 中运行的程序,它使用 JNI 调用我创建的共享对象作为系统上另一个共享对象的包装器。当我从 Eclipse 内部运行它时,这工作得很好,但是当我使用以下命令从命令行运行它时,包装器调用的共享对象会引发未定义的符号错误。
java -Djava.library.path=[库路径] com.[我的名字].[程序]
ldd 似乎没有表明共享对象中缺少任何库。我也尝试在 shell 中设置所有环境变量,我执行它与 eclipse 环境相同,它做同样的事情。任何关于从哪里去的建议都非常感谢我没有想法。
感谢您的帮助
linker - 了解 ldd 输出
怎么ldd
知道它取决于libc.so.6
,不是libc.so.5
或libc.so.7
?
mod-wsgi - 在 CentOS 5.5 上运行“ldd mod_wsgi.o”获取“不是动态可执行文件”
我在 64 位 CentOS 5.5 上安装了 Python 2.7.1,并针对 2.7.1 编译了 mod_wsgi。我正在构建一个 DJango Web 应用程序,需要来自 2.7 的 Python 模块(CentOS 的 Python 内置版本只有 2.4.3,而且非常缺乏)。我基本上遵循了这个很棒的链接上的程序:
http://willsani.com/2011/03/02/centos-5-5-x86_64-install-python-2-7/
所以,我现在已经在 /opt/python2.7.1 中安装了 Python 2.7.1 的工作版本。但是,当我在 Apache 中安装我的 mod_wsgi.o 模块时,Apache 无法启动:
因此,我针对我的 mod_wsgi.o 版本运行了 ldd 命令,并且没有看到预期的共享库列表,而是看到:
目前,我的 Web 应用程序正在运行 mod_wsgi,它在 Python 2.4.3 上运行良好。其他人设置了它,所以不确定他们是否需要做任何特别的事情 - 我继承了设置。我已经从http://code.google.com/p/modwsgi/阅读了与构建和安装 mod_wsgi 相关的所有内容,并在网上搜索了答案。看不到有关此错误的任何信息。
任何帮助将不胜感激!
linux - 交叉编译器ldd
我创建了一个交叉编译的 arm 可执行文件。我想找到可执行文件的库依赖项。我正在使用 ubuntu natty 并安装了 arm-linux-gnueabi 工具链,其中不包含 ldd。是否有可用于查看 linux 中 arm 可执行文件库依赖关系的工具。
solaris - Sunfreeware openssl 对 libgcc_s.so.1 有重复引用
任何提示如何解决这个缺少库的问题?在这种情况下,我使用的是 Sunfreeware 软件包,而不是从源代码编译。
- - 更多信息 - -
---蹩脚的解决方法---
--- 另一次尝试失败 ---
static-libraries - 使用 pf_ring 链接到 pcap
我正在尝试使用用 pf_ring 编译的 libpcap。我从 ntop 获得了源代码,并对其进行了编译。
但是,有些事情我不明白(对于新手链接问题感到抱歉):我想知道我的应用程序是否使用了正确的 pcap 版本(带有 pfring 的版本),所以我输入了 ldd 并且根本没有看到 pcap,只有pfring。
我查看了输出,只看到 pfring.so 而不是 pcap,尽管我动态链接到这两个库。
我查看了 libpcap 的 Makefile,发现它与 pfring.a 静态链接。我以为我根本不必与 pfring 链接,因为它是 pcap 的一部分,但得到了未定义的引用。
有谁知道为什么我得到未定义的引用错误,为什么我在动态链接到它时在 ldd 输出中看不到 libpcap?
谢谢,罗恩
gcc - gcc 链接共享库反对符号链接
我有两个库,例如两个烤面包机库libtoaster_a.so和libtoaster_b.so以及所有相关的主要/次要/rev 符号链接,例如libtoaster_a.so.1.0.0等。两个库都实现相同的烤面包机接口,但只需进行处理不同。因此,当我构建一个使用该库的应用程序时,使用哪个并不重要(从应用程序的角度来看,它们是相同的)。
因为我想在应用程序编译和分发后决定使用哪个库,所以我创建了一个符号链接libtoaster.so,它指向libtoaster.so.1,然后可以指向libtoaster_a.so.1和libtoaster_b.so。 1 . 因此,用户/安装者可以简单地更改libtoaster.so.1链接来选择要使用的实现。
对于构建,我默认将libtoaster.so.1链接到libtoaster_a.so.1。当我编译我的应用程序时,例如:my_app通过类似gcc -o my_app -ltoaster...
它的东西编译甚至使用libtoaster_a.so.1正确运行。但是,如果我在 my_app 上运行 ldd,我会看到它根据需要链接到libtoaster_a.so.1而不是libtoaster.so.1,因此更改libtoaster.so.1链接无效。
有没有比制作libtoaster_a.so.1、将其重命名为 libtoaster.so.1、针对该库制作 my_app 然后删除libtoaster.so.1并再次将其创建为符号链接更好的方法来解决此问题?
linux - 如何在 Linux 上的 /etc/ld.so.conf 中获取路径列表
获取路径列表、配置路径/etc/ld.so.conf
和其中包含的文件的最便携和最可靠的方法是什么?手动解析文件似乎不是一个好主意——格式可能会在未来的修订版中发生变化。
为了更好地理解这个问题,我将在下面为您提供具体细节。请注意,尽管有这些细节,但这是一个通用的编程问题,适用于其他情况。
有一个程序,叫做LuaRocks。它是 Lua 编程语言的包管理器(有点像 Ruby gems 或 Python Eggs)。LuaRocks 包被称为“rocks”。
作为一个方便的特性,LuaRocks 允许 Rock 作者为 Rock 指定一个外部依赖项列表,以 C 头文件和/或动态库文件的列表形式表示。(Linux 上的.so。)如果指定的文件不存在,则无法安装rock。
目前,在 Linux 上,LuaRocks 默认通过在两个硬编码路径中搜索文件来检查 .so 文件是否存在,以及 .so/usr/lib
文件/usr/local/lib
。
我相信这是不正确的行为,它被Ubuntu 和其他 Debian 发行版最近的变化所打破。
更新:路径本身不是硬编码的,但用户可以在配置文件中配置。尽管如此,IMO 并不是最好的解决方案。
相反(据我了解),LuaRocks 应该在路径中查找文件,/etc/ld.so.conf
由它指定和包含的文件。
(现在请重新阅读上面的问题;-))