标签: shared-library

是否有任何开源方法可以从没有源代码可用性的动态可执行文件中生成静态文件?

让我用一个例子来解释这个问题。我在日常工作中使用一些旧程序,例如xfigpdfedit

现在,这些程序已经很老了,更新也不是很频繁;我担心有一天,由于缺少某些库或某些不兼容的更新,它们将不再工作。

如果程序很容易编译现在,正在运行的系统上,解决的办法是得心应手:尝试破解了一下源和编译静态---生成的可执行文件将是很大的,不那么有效,但是它会为工作可预见的未来(1)。这似乎是这种情况xfig,我会尽快尝试。

但是,例如,pdfedit依赖于Qt3,此时设置一个系统来编译它是相当复杂的。幸运的是,现在可以运行,这要归功于它所需的库与任何东西都不冲突。但这在未来可能会改变,所以我想解决这个问题:

如果我在 Ubuntu 上有一个动态的和所有的库,但没有源代码,我怎么能制作一个静态的二进制文件(或类似的东西)?

我四处寻找。一种可能性是statifier (2),但它在地址随机化方面有很多问题,所以这是一个禁忌。非免费版本Ermine似乎有效,但我真的更喜欢开源选项。

另一种可能性是使用 docker 或类似的打包系统。但是我找到的所有教程都非常面向 RedHat;而且,老实说,遵循起来非常复杂。


脚注

(1) 没那么疯狂。例如,我使用静态 ffmpeg,工作正常,没有任何兼容性问题......

(2)编译statifier,见/sf/ask/1644876621/

shared-library compiling libraries

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

升级到 Ubuntu 19.04 后的 Wolfram Mathematica:符号查找错误:/usr/lib/x86_64-linux-gnu/libfontconfig.so.1:未定义符号:FT_Done_MM_Var

我最近将我的台式机从 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 用户,无法理解所有这些东西的含义。

有没有人见过这个问题?

upgrade fonts shared-library mathematica 19.04

21
推荐指数
2
解决办法
9176
查看次数

如何在 64 位机器上安装 32 位版本的 libstdc++.so.6

我需要在 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)

64-bit php extension shared-library 32-bit

20
推荐指数
2
解决办法
8万
查看次数

如何找到哪个 libc 版本的应用程序链接?

使用 g++ 构建应用程序时,我没有明确地将libc库作为要链接的库传递-lpthread给其他库(例如传递)。

我知道它libclibc.so.6这样的名字,但我知道这实际上不是一个库,而是类似于指向另一个版本libc(例如libc-2.15.so)的指针。

如果libc我的计算机上有多个版本,我如何知道实际使用了libc.so.6哪个版本?

shared-library application-development

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

加载共享库时出错,文件太短

我从我的一位客户那里收到了一份申请。当我尝试运行它时出现以下错误

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 损坏了吗?如何解决该错误?

shared-library binary

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

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

我正在使用 ubuntu 11.10 64 位,
Skype 正在工作,但是在运行sudo apt-get autoremoveSkype后抛出

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

我怎样才能解决这个问题?

64-bit shared-library skype 11.10

18
推荐指数
3
解决办法
8万
查看次数

加载共享库时 GParted 不工作错误:libgtkmm-2.4.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)

apt shared-library gparted

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

如何安装 libtiff.so.3?

当我尝试从终端运行 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 是第三方软件。

shared-library

14
推荐指数
2
解决办法
7万
查看次数

libusb-0.1.so.4 在 ubuntu 64 位系统中共享库错误

我正在尝试在 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-bit shared-library

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

Qt 找不到 GL/gl.h 但 libGL.so 存在

我正在运行 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)

nvidia shared-library qt opengl 14.04

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