我有一个应用程序,比如 gedit,它是动态链接的,但我没有源代码。所以我不能按我喜欢的方式编译它。我想要做的是将其静态链接并将其移动到没有运行该应用程序所需的库的系统。那么是否可以做到以及如何做到?
理论上是可以的。您基本上必须执行与动态链接器相同的工作,但需要进行一些修改,即
所以
objdump
、readelf
和objcopy
将成为您的一些朋友。
这项任务并不容易,结果既不是自动的,也不是(可能)稳定的。
您可能想通过其他尝试过相同操作的人检查此代码,实际上是拦截动态链接器(即上面的所有步骤,除了最后一个)并将结果转储到磁盘。
它基于这个工具,所以任何人都可以打赌它是否适用于最新的内核。
(可能不会 - 你至少需要修补它以反映新的结构。这是我的尝试这样做。买者自负)。