【发布时间】:2011-01-27 19:09:56
【问题描述】:
我有一个 C++ 程序,它依赖于很多库(一些常见的系统库,如 libjpeg,一些未在系统范围内安装的个人库)。该程序在机器 A (Debian Squeeze) 上编译良好。我想在机器 B(Ubuntu maveric)和机器 C(Arch)上运行程序。假设两台机器 B+C 都是极少的安装。不要指望在那里找到我的程序使用的任何库,如果有的话,它们的版本不同。
是否有任何程序可以扫描我的程序的所有依赖项(使用 ldd 或其他东西)收集所有这些依赖项,并生成一个脚本来告诉二进制文件使用这些以及它在任何其他系统上附带的这些库?
谢谢!
【问题讨论】:
-
祝你好运;或者,您可以按照惯例提供源代码
-
我不打算“交付”。我想要这个供我自己使用。我有源代码,但重新编译可能真的很痛苦。例如,编译器通常假设使用不同版本的库是安全的。然而,情况并非总是如此 - 我想 100% 确定程序在每台机器上使用完全相同的库。
-
听起来你做得不对。从源代码构建应该很容易。如果我是你,我会专注于解决这个问题。
-
@David Heffernan 听起来您正在使用比我更智能的构建系统。关心分享? (请记住,我不想为每个系统编写特定的 Makefile、Cmake findscripts 或其他任何东西)
-
klik 曾经能够从 Debian 软件包和依赖项中自动创建配方,但它有一段时间没有更新,并且 .deb 格式在那个时候已经更新了一些,所以我不确定它是否仍然有效。
标签: c++ linux binary portability ldd