Deixe-me explicar o problema com um exemplo. Eu uso algum programa antigo no meu dia-a-dia, como por exemplo xfig e pdfedit .
Agora, esses programas são bastante antigos e não são atualizados com muita frequência; meu medo é que um dia ou outro eles não funcionem mais por falta de alguma biblioteca ou atualização incompatível.
Se o programa é fácil de compilar agora , em um sistema em execução, a solução é útil: tente hackear um pouco a fonte e compilá-la estaticamente - o executável resultante será grande e não tão eficiente, mas funcionará para o futuro previsível (1). Parece ser esse o caso xfig
e tentarei assim que possível.
Mas, por exemplo, pdfedit
depende do Qt3, e configurar um sistema para compilá-lo é bastante complexo no momento. Felizmente, ele pode ser executado agora, graças ao fato de que a biblioteca de que precisa não entra em conflito com nada. Mas isso pode mudar no futuro, então eu gostaria de resolver este problema:
Como posso criar um binário estático (ou algo semelhante) se tenho um dinâmico e todas as bibliotecas, mas nenhum código fonte, no Ubuntu?
Eu procurei ao redor. Uma possibilidade é o statifier (2), mas há muitos problemas com a randomização de endereços , por isso é um não-não. A versão não gratuita, Ermine , parece funcionar, mas eu realmente preferiria uma opção de código aberto.
Outra possibilidade é usar o docker ou um sistema de empacotamento semelhante. Mas todo o tutorial que encontrei é bastante orientado para o RedHat ; e, honestamente, bastante complexo de seguir.
Notas de rodapé :
(1) não é tão louco. Eu uso um ffmpeg estático, por exemplo, funciona bem e sem problemas de compatibilidade ...
(2) para compilar statifier
, consulte /programming/23498237/compile-program-for-32bit-on-64bit-linux-os-causes-fatal-error
linux-vdso.so.1
não há lugar para ser visto, suponho que esteja no kernel, correto?man 7 vdso
: "O" vDSO "(objeto compartilhado dinâmico virtual) é uma pequena biblioteca compartilhada que o kernel mapeia automaticamente no espaço de endereço de todos os aplicativos de espaço do usuário."Uma sugestão sobre o statifier :
Se a randomização do layout do espaço de endereço (ASLR) estiver causando uma falha, você não precisará desativá-lo para toda a máquina. Você pode desativá-lo apenas para esse processo:
Ele executará esse comando com o layout aleatório desativado (não precisa ser root).
fonte
statifier
...xfig_statified
ainda lixões ... uma pena. Obrigado mesmo assim.