- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 ldd 中遇到了以下奇怪的情况
$ sudo ldd ./monit
not a dynamic executable
$ readelf -d monit
Dynamic section at offset 0x25ea90 contains 27 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libdl.so.2]
0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
0x0000000000000001 (NEEDED) Shared library: [libpam.so.0]
0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0]
0x0000000000000001 (NEEDED) Shared library: [libcrypt.so.1]
0x0000000000000001 (NEEDED) Shared library: [libresolv.so.2]
0x0000000000000001 (NEEDED) Shared library: [libnsl.so.1]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
...
$ file ./monit
./monit: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.0, with debug_info, not stripped
$ uname -r -i -m
4.15.0-43-generic x86_64 x86_64
$ file $(which ls)
/bin/ls: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=9567f9a28e66f4d7ec4baf31cfbf68d0410f0ae6, stripped
其他二进制文件和库是针对更新的内核/系统编译的,并且 ldd 成功报告了共享库,我想知道不同环境之间是否存在任何不兼容性,尽管这些二进制文件是在相同的体系结构上构建的..另一个愚蠢的问题是,如果某些共享库像 libpam 一样升级,那么在不插入旧库的情况下,二进制文件可能无法运行,api 是否可能会发生如此大的变化?如果新版本向后兼容,那么创建一个新的动态链接 (ln) 到旧名称还不够吗?
--最新--真是个白痴。我忘了我已经拒绝了该主机上分区的执行权限:(ldd 命令按预期工作
最佳答案
if there are any incompatibilities between different environment despite of the fact that the binaries are built on the same architecture
程序所依赖的“环境”是一个大词,是许多小东西放在一起的一个大词。它是一种体系结构(即CPU支持的指令集)或类似的体系结构(主板结构、CPU到内存结构等)或类似的操作系统细节(例如带有GNU扩展的POSIX兼容系统或带有dos的DOS系统) .h 库)。环境也是库版本,因为它们的 api 可以更改,并且也像环境变量(好吧,如果环境中存在这样的变量)。
知道“如果不同环境之间存在任何不兼容性”,您必须手动检查两个版本之间的所有更改。人们使用版本控制作为通知某些事情发生变化的可靠但糟糕的方式。然后,您必须查看文档,以人类可读的方式查看发生了什么变化。然后你必须查看源代码,看看到底发生了什么变化。
if some of the shared libraries would be upgraded like libpam, there would be chances that the binaries won't run without interposing the old libraries, is it likely that the api will be change so much?
首先请注意,大多数 UNIX 程序都遵循 GNU 许可证,该许可证规定:
THERE IS NO WARRANTY FOR THE PROGRAM
没有人会保证它在任何情况下都能工作。也就是说,可能是这样。可能不会。世界上有很多不同的库,它们是由不同的人编写的,而且它们都经常更改 api,所以它可能不起作用。它可能会起作用。这取决于。
为了确保 api 不会发生太大变化,聪明人写信给 standards 。和standards 。和standards 。和标准......
另一边是人们,即开发人员,他们免费完成所有这些艰苦的工作。他们需要更改 api,以便引入新的优秀功能或修复错误。所以他们稍微改变了 api。这可能会破坏依赖于该 api 的旧程序。
if the new releases was backward compatible, wouldn't be enough making a new dynamic link (ln) to the old name?
我这样做的次数比我愿意承认的要多(主要是用旧的 libpng 运行 eagle),而且大多数情况下它都是有效的。试试吧,(通常,在正常的unix下,以用户身份运行,具有良好的权限)最糟糕的情况可能是你的程序会出现段错误(好吧,在sudo下可能发生的最糟糕的情况是对你的硬件造成永久性损坏并删除您的所有数据)。
大多数(不是全部)GNU/Linux 系统使用 glibc 作为 C 标准库的实现。这应该是最稳定的 api,因为所有 C 程序都依赖它。还有它changes too而且它并不总是向后兼容。
关于c - 旧二进制文件上的 ldd 怪异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55041607/
我不明白为什么有两段代码要做完全相同的事情,却在 Scala 中做不同的事情。 第一个例子: scala> val ggg = Source.fromFile("/somefile"); ggg: s
您认为以下结果如何? SELECT CHARINDEX('space and /* comment */', 'Phrase with space and /* comment */') AS Mat
我正在尝试为单元测试创建带有某些修饰符的 MouseEvent。我使用的是 J2SE,以下代码无法通过: public void testMouseEventProblem() { Mouse
为什么输出0而不是1? System.out.println((int) (Math.ceil(1/2))); 虽然这个正确输出 1 System.out.println((int) (Math.ce
如果我运行这段代码: var a = new Float32Array(3); a[0] = 1; a[1] = 1.1; a[2] = 1.00001; 我得到了a的结果: [1, 1.100000
今天刚开始使用“UIRefreshControl”,发现了一些奇怪的事情。 如果我在 InterfaceBuilder 中创建了 UIRefreshControl,并将其连接起来,我的选择器将永远不会
这是一个非常简单的问题,但是 PHP 文档没有解释为什么会这样。 我有这个代码: var_dump($newattributes); var_dump($oldattributes); var_dum
如果我通常加载一个 UITabBarController 并在 View 之间切换,它会调用每个 View Controller 的 viewWillAppear。但事实并非如此。 我想在触摸另一个标
我有一个关于 setContentOffset 的奇怪问题,我似乎无法解决:我正在尝试构建一个“无尽”的 ScrollView ,所以我想在某个位置重置内容偏移量。使用下面的代码,setContent
这个把我难住了。 我有一个 java.sql.ResultSet,我正在从中提取字符串值,如下所示: address.setAddressLine1(rs.getString("AddressLine
...至少对我来说。这段代码曾经工作得很好。我很确定什么都没有改变,但现在突然间它的行为变得奇怪了。基本上我正在尝试创建内联编辑功能。当用户单击该链接时,它会动态生成一个文本框以及一个确认和取消链接。
我在 ldd 中遇到了以下奇怪的情况 $ sudo ldd ./monit not a dynamic executable $ readelf -d monit Dynamic sectio
我的 app.config 文件发生了一件奇怪的事情。我的 ConnectionStrings 部分包含以下内容: 但是,当我通过 ConfigurationManager.Connecti
CSS 不是我的强项,我不确定我的列表项在 IE6 中发生了什么。我希望它们垂直对齐,但第一个列表项总是被向右推一两个像素,因此它不再与列表中的其他成员对齐。就我而言,此列表在 IE7/8、FF3 和
制作了一个网络作品集。我的名字周围有联系方式。文本的初始宽度为 0,当鼠标悬停时,图标会随着“过渡”属性展开。左边的图标工作正常,但右边的图标过渡很奇怪,尤其是手机。 http://jsfiddle.
发生的事情是我遵循了这个demo ,我修改了它以满足我的需要,让它工作,将其更改为使用函数绘制两个图形,但现在使用 plt.show() 或 plt 根本不起作用。 savefig() 这是我的代码
我正在尝试编写一个从整数中提取最低阶数的函数。例如: > 24689.lowest_order => 9 到目前为止我有: class Integer def lowest_order I
不确定这是包中的错误还是由于其他原因,但我们开始吧。 我正在使用以下包在相似性分数的对称矩阵(大小为 10x10)上查找最大特征值及其对应的特征向量: scipy.sparse.linalg.eige
我正在尝试实现一个名为“inet_pton”的函数,它将 IPv4 或 IPv6 的字符串表示形式(如“66.102.1.147”[google])转换为二进制网络字节有序形式。这是我的代码的相关部分
比较 float 。根据第一个代码块,5 大于 37.66。第二个 block 声称 5 小于 37.66。 toFixed() 对这些使第一个 block 按照它的方式使用react的是什么? (这
我是一名优秀的程序员,十分优秀!