Позвольте мне объяснить проблему на примере. Я использую некоторые старые программы в моей повседневной работе, как, например , Xfig и PDFedit .
Теперь эти программы довольно старые и не обновляются слишком часто; Я боюсь, что в один прекрасный день они больше не будут работать из-за отсутствия какой-либо библиотеки или несовместимого обновления.
Если программу легко скомпилировать сейчас , на работающей системе решение пригодится: попытайтесь немного взломать исходный код и скомпилировать его статически - полученный исполняемый файл будет большим и не очень эффективным, но он будет работать для обозримое будущее (1). Кажется, это так, xfig
и я постараюсь сделать это как можно скорее.
Но, например, это pdfedit
зависит от Qt3, и настройка системы для его компиляции в настоящее время довольно сложна. К счастью, его можно запустить прямо сейчас, благодаря тому, что нужная ему библиотека ни с чем не конфликтует. Но это может измениться в будущем, поэтому я хотел бы решить эту проблему:
Как я могу создать статический двоичный файл (или аналогичный объект), если у меня есть динамическая и все библиотеки, но нет исходного кода в Ubuntu?
Я искал вокруг. Одна возможность - statifier (2), но у него много проблем с рандомизацией адресов , так что это нет-нет. Несвободная версия, Ermine , похоже, работает, но я бы действительно предпочел вариант с открытым исходным кодом.
Другая возможность - использовать докер или аналогичную упаковочную систему. Но все учебники, которые я нашел, довольно ориентированы на RedHat ; и, честно говоря, довольно сложный для подражания.
Сноски :
(1) не так сумасшедший. Я использую статический ffmpeg, например, работает нормально и без проблем совместимости ...
(2) для компиляции statifier
, см. Https://stackoverflow.com/questions/23498237/compile-program-for-32bit-on-64bit-linux-os-causes-fatal-error
linux-vdso.so.1
нигде не видно, наверное, в ядре, верно?man 7 vdso
: «vDSO» (виртуальный динамический общий объект) - это небольшая общая библиотека, которую ядро автоматически отображает в адресное пространство всех приложений пользовательского пространства ».Одно предложение относительно стабилизатора :
Если рандомизация размещения адресного пространства (ASLR) приводит к сбою, вам не нужно отключать его для всей машины. Вы можете отключить его только для этого процесса:
Он запустит эту команду с отключенным рандомизированным макетом (не нужно быть пользователем root).
источник
statifier
...xfig_statified
до сих пор дампы ядра ... жаль. Спасибо, в любом случае.