【问题标题】:How to make the program dynamic-library-linked being portable?如何使程序动态库链接可移植?
【发布时间】:2011-12-29 10:59:36
【问题描述】:

这是我的解决方案:

我将程序移动到另一台没有安装任何库的计算机上,阅读错误消息并一个接一个地复制库。

我必须重复几次,直到创建所需的所有库。在某些情况下,我不知道库在哪里,也找不到它。

有什么方法可以让你更轻松吗?

【问题讨论】:

  • Visual Studio 中的运行时库已经作为可安装包存在(搜索“可再发行运行时”)。还可以使用 Dependency walker 之类的东西来查找其他 DLL 可能需要复制的内容。
  • linux有解决办法吗?
  • 你想要你在 Linux 中的解决方案吗?我也用 linux 标记了你的帖子,请批准编辑。
  • 对于 Linux,只复制库通常不是一个好主意。而是安装库所属的包。

标签: linux shared-libraries


【解决方案1】:

使用Dependency Walker。它是一个免费的实用程序,可以扫描 EXE 和 DLL,并构建所有依赖模块的层次树图。

编辑: 在 linux try binscan or ELF Library Viewer 上(来自 J-16 SDiZ 的 SO 回答)。

【讨论】:

  • Linux中的解决方案是什么?
  • @snowcakeandicejelly Here 是 Stack Overflow 上的答案。
  • 我发现binscan的页面中的ldd和nm对我来说已经足够了
【解决方案2】:

使用包管理系统。它们会根据 linux 的风格而有所不同,但只是将二进制文件从一台机器复制到另一台机器上并不是在机器上安装软件的方式。如果你想从机器 A 获取 /bin/foo 到机器 B,在 A 上找出 /bin/foo 属于哪个包,然后在 B 上安装该包。下载和安装所有依赖项应该很简单: $ aptitude install foo # debian 和 debian 衍生产品

$ yum install foo # 基于 rpm 的发行版

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多