让我用一个例子来解释这个问题。我在日常工作中使用了一些旧程序,例如xfig和pdfedit。
现在,这些程序已经很老了,不需要经常更新。我担心的是,由于缺少某些库或某些不兼容的更新,有一天或另一天它们将不再起作用。
如果程序很容易编译现在,正在运行的系统上,解决的办法是得心应手:尝试破解了一下源和编译静态---生成的可执行文件将是很大的,不那么有效,但是它会为工作可预见的未来(1)。似乎是这种情况xfig
,我将尽快尝试。
但是,例如,pdfedit
取决于Qt3,此时建立一个系统对其进行编译非常复杂。幸运的是,由于它需要的库没有任何冲突,因此它可以立即运行。但这将来可能会改变,所以我想解决这个问题:
如果我在Ubuntu上有一个动态的所有库,但没有源代码,如何制作静态二进制文件(或类似的东西)?
我四处搜寻。指示符(2)是一种可能,但是地址随机化存在很多问题,因此是不行的。非免费版本Ermine似乎可以使用,但我确实希望使用开源选项。
另一种可能性是使用docker或类似的打包系统。但是我发现的所有教程都是面向RedHat的。老实说,遵循起来非常复杂。
脚注:
(1)没有那么疯狂。例如,我使用静态ffmpeg,工作正常,没有任何兼容性问题...
(2)进行编译statifier
,请参见/programming/23498237/compile-program-for-32bit-on-64bit-linux-os-causes-fatal-error