让我用一个例子来解释这个问题。我在日常工作中使用一些旧程序,例如xfig和pdfedit。
现在,这些程序已经很老了,更新也不是很频繁;我担心有一天,由于缺少某些库或某些不兼容的更新,它们将不再工作。
如果程序很容易编译现在,正在运行的系统上,解决的办法是得心应手:尝试破解了一下源和编译静态---生成的可执行文件将是很大的,不那么有效,但是它会为工作可预见的未来(1)。这似乎是这种情况xfig,我会尽快尝试。
但是,例如,pdfedit依赖于Qt3,此时设置一个系统来编译它是相当复杂的。幸运的是,它现在可以运行,这要归功于它所需的库与任何东西都不冲突。但这在未来可能会改变,所以我想解决这个问题:
如果我在 Ubuntu 上有一个动态的和所有的库,但没有源代码,我怎么能制作一个静态的二进制文件(或类似的东西)?
我四处寻找。一种可能性是statifier (2),但它在地址随机化方面有很多问题,所以这是一个禁忌。非免费版本Ermine似乎有效,但我真的更喜欢开源选项。
另一种可能性是使用 docker 或类似的打包系统。但是我找到的所有教程都非常面向 RedHat;而且,老实说,遵循起来非常复杂。
脚注:
(1) 没那么疯狂。例如,我使用静态 ffmpeg,工作正常,没有任何兼容性问题......
(2)编译statifier,见/sf/ask/1644876621/
我最近将我的台式机从 Ubuntu 18.10 升级到了 19.04。现在,当我尝试启动 ?o?n?e? 时出现以下错误??的??我的??程式?Wolfram Mathematica 11.3:
symbol lookup error: /usr/lib/x86_64-linux-gnu/libfontconfig.so.1: undefined symbol: FT_Done_MM_Var
Run Code Online (Sandbox Code Playgroud)
我试图检查这个命令:
$ ldd /usr/lib/x86_64-linux-gnu/libfontconfig.so.1
linux-vdso.so.1 (0x00007fffbd1e9000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f723c2e6000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f723c2a9000)
libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f723c2a0000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f723c27f000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f723c094000)
libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f723c05d000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f723c03f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f723c401000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f723bef1000)
Run Code Online (Sandbox Code Playgroud)
但我不是那种高级 linux 用户,无法理解所有这些东西的含义。
有没有人见过这个问题?
我需要在 64 位 Ubuntu 8.04.2 服务器上安装 32 位版本的 libstdc++.so.6。
当我尝试时apt-get install ia32-libs,它说
root@devserver:~/downloads# apt-get install ia32-libs
Reading package lists... Done
Building dependency tree
Reading state information... Done
ia32-libs is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 133 not upgraded.
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试启用使用此运行时库的 PHP 扩展 (libpdf_php.so) 时,以下错误记录在 php 错误日志中。
root@devserver:~/downloads# cat /var/log/apache2/php_error.log
[01-Nov-2011 16:54:09] PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20060613/libpdf_php.so' - /usr/lib/php5/20060613/libpdf_php.so: wrong ELF class: ELFCLASS32 in Unknown on line 0 …Run Code Online (Sandbox Code Playgroud) 使用 g++ 构建应用程序时,我没有明确地将libc库作为要链接的库传递-lpthread给其他库(例如传递)。
我知道它libc有libc.so.6这样的名字,但我知道这实际上不是一个库,而是类似于指向另一个版本libc(例如libc-2.15.so)的指针。
如果libc我的计算机上有多个版本,我如何知道实际使用了libc.so.6哪个版本?
我从我的一位客户那里收到了一份申请。当我尝试运行它时出现以下错误
error while loading shared libraries: ./libvtkWidgets.so.5.4: file too short
Run Code Online (Sandbox Code Playgroud)
在我的项目结构中,我看到以下内容:
-rwxrwxrwx 1 tomasz tomasz 20 2011-02-01 10:44 libvtkWidgets.so
-rwxrwxrwx 1 tomasz tomasz 22 2011-02-01 10:44 libvtkWidgets.so.5.4
-rwxrwxrwx 1 tomasz tomasz 2147103 2011-02-01 10:44 libvtkWidgets.so.5.4.2
Run Code Online (Sandbox Code Playgroud)
我的共享库 libvtkWidgets 损坏了吗?如何解决该错误?
我正在使用 ubuntu 11.10 64 位,
Skype 正在工作,但是在运行sudo apt-get autoremoveSkype后抛出
skype:加载共享库时出错:libXss.so.1:无法打开共享对象文件:没有这样的文件或目录
我怎样才能解决这个问题?
我无法运行 gparted。
我已清除并重新安装,但错误仍然存在。
这是sudo gparted在终端中运行的输出
$ sudo gparted
/usr/sbin/gpartedbin: error while loading shared libraries: libgtkmm-2.4.so.1: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我尝试安装 libgtkmm-2.4,我得到了这个:
$ sudo apt-get install libgtkmm-2.4
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'libgtkmm-2.4-dev' for regex 'libgtkmm-2.4'
Note, selecting 'libgtkmm-2.4-1c2a' for regex 'libgtkmm-2.4'
Note, selecting 'libgtkmm-2.4-doc' for regex 'libgtkmm-2.4'
Note, selecting 'libgtkmm-2.4-1v5' for regex 'libgtkmm-2.4'
Note, selecting 'libgtkmm-2.4-dbg' for regex 'libgtkmm-2.4'
libgtkmm-2.4-1v5 is already the newest …Run Code Online (Sandbox Code Playgroud) 当我尝试从终端运行 Maya 时,我得到:
error while loading shared libraries: libtiff.so.3: cannot open shared object file: No such file or directory.
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
注意:Maya 是第三方软件。
我正在尝试在 ubuntu 12.04 64 位机器上安装 ZTE MF191 驱动程序。我不确定它是否支持 64 位。但它在 32 位系统中运行良好。这些驱动程序包有一个名为zr的可执行文件当我尝试运行它时它会引发错误
libusb-0.1.so.4: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索但找不到安装(lib)它的方法。有些人建议安装 32 位版本,但我在突触中找不到。请帮忙。
我正在运行 64 位 Ubuntu 14.04。
我得到的编译错误是:
In file included from ../../../Qt/5.4/gcc_64/include/QtOpenGL/qgl.h:39:0,
from ../../../Qt/5.4/gcc_64/include/QtOpenGL/qglshaderprogram.h:37,
from ../../../Qt/5.4/gcc_64/include/QtOpenGL/QGLShaderProgram:1,
from glwidget.h:5,
from glwidget.cpp:1:
../../../Qt/5.4/gcc_64/include/QtGui/qopengl.h:122:21: fatal error: GL/gl.h: No such file or directory
# include <GL/gl.h>
^
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我似乎正确安装了 libGL.so 并符号链接到我的 Nvidia 343 显示驱动程序(我认为它也安装了 OpenGL 驱动程序)安装的 OpenGL 库。
$ ls -l /usr/lib | grep -i libgl
lrwxrwxrwx 1 root root 17 Jan 15 12:47 libGLESv1_CM.so -> libGLESv1_CM.so.1
lrwxrwxrwx 1 root root 22 Jan 15 12:47 libGLESv1_CM.so.1 -> libGLESv1_CM.so.343.36
-rwxr-xr-x 1 root root 48248 Jan 15 12:47 …Run Code Online (Sandbox Code Playgroud)