executável binário do Debian para o Ubuntu?

0

Eu compilei alguns grandes programas em c ++ com o gcc 4.9 no Debian. Eu quero saber se o código binário executável é compatível e seguro também no Ubuntu, ou recompilar programa no Ubuntu?

    
por Gab 30.11.2015 / 11:56

1 resposta

1

O problema está na biblioteca principal que é difundida em todos os Linuxes-glibs atuais. Ele incorpora um "recurso" chamado "versionamento de símbolo" que adiciona uma capacidade de ter mais de uma versão de cada função padrão dentro da biblioteca compartilhada libc e bibliotecas de suporte que vêm com a glibc.

Por exemplo, seu binário resultante pode depender das versões dos símbolos "GLIBC_2.15", e seu sistema de destino fornece um máximo de "GLIBC_2.14". Então você receberá uma mensagem de erro fatal e nada mais.

Algumas versões do glibc até se recusam a rodar em kernels antigos ou até mesmo em hardware, mas é raro.

Com a glibc, compilar estaticamente também não é uma opção (se você pensou sobre isso), porque certas partes da glibc podem requerer libs dinâmicas até mesmo de programas estáticos (durante a compilação e a vinculação você receberá um aviso se ).

Se você precisa fazer um binário para rodar em muitos sistemas, você quer usar outro libc. Se você quer apenas que um binário seja executado em outro sistema, é melhor reconstruí-lo nesse sistema.

Em certos casos (não aplicável ao glibc), se o seu destino for muito lento, você pode copiar sua árvore de código-fonte compilada, tocar em todos os arquivos de objetos (* .o) e remover o binário. Em seguida, executar make apenas vinculará novamente.

Por favor, note também que muitas (mas não todas!) bibliotecas de terceiros também podem impor requisitos de versionamento de símbolos, e isso também se aplica a elas.

    
por 30.11.2015 / 12:31