Quais arquivos de biblioteca são necessários para executar um binário com uma versão alternativa da libc?

2

Eu criei o Firefox 26 no Mint 16 porque os utilitários de compilação do Ubuntu 10.04 são muito antigos para construí-lo. Ele precisa ser executado em 10.04, no entanto, já que esse é o sistema operacional de destino para o qual estou construindo. Ele construiu e funciona muito bem em Mint 16.

Ao mover o pacote para o 10.04 e tentar executar, recebo erros porque o SO usa uma versão libc diferente da usada pelo Firefox.

O erro real é:

/lib/libc.so.6: version 'GLIBC_2.17' not found

Eu tenho feito muita pesquisa tentando resolver isso e até agora descobri o seguinte:

Eu posso apontar um binário em um caminho alternativo para arquivos de biblioteca com

export LD_LIBRARY_PATH="/opt/lib"

Coloquei o libc.so.6 do Mint 16 em /opt/lib em 10.04 e executei o comando acima. Mas depois de mudar essa variável, eu recebo:

error while loading shared libraries: __vdso_time:
   invalid mode for dlopen(): Invalid argument

Não apenas para o firefox, mas para todos os comandos, incluindo itens como ls . Um pouco mais de pesquisa sugere que eu preciso de um conjunto de arquivos de biblioteca para fazer este trabalho, não apenas libc.so.6 . O problema é, eu não sei quais eu preciso copiar?

Então eu descobri ldd . ldd ./firefox mostra:

./firefox: /lib/libc.so.6: version 'GLIBC_2.17' not found (required by ./firefox)
    linux-vdso.so.1 =>  (0x00007fffe9289000)
    libpthread.so.0 => /lib/libpthread.so.0 (0x00007f80ee456000)
    libdl.so.2 => /lib/libdl.so.2 (0x00007f80ee252000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f80edf3d000)
    libm.so.6 => /lib/libm.so.6 (0x00007f80edcba000)
    libc.so.6 => /lib/libc.so.6 (0x00007f80ed934000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f80ee68b000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f80ed71c000)

E eu pensei, "talvez eu só precise copiar todos os que estão na lista". Exceto eu não consegui encontrar um linux-vdso em qualquer lugar no Mint 16, e é vdso que está sendo reclamado.

Então, minha pergunta é, quais bibliotecas eu preciso mudar do Mint 16 para o Ubuntu 10.04 em / opt / var, para fazer o Firefox rodar em 10.04?

    
por Nick 08.01.2014 / 07:56

1 resposta

1

linux-vdso (e linux-gate) são bibliotecas no kernel que lidam com o carregamento de binários ELF; se você tem um kernel Linux (relativamente recente), ele possui um. Uma lista provavelmente completa seria:

ld.so
libSegFault
libanl
libc
libicdn
libcrypt
libdl
libieee
libnsl
libnss
libpcprofile
libpthread
libresolv
librpcsvc
librt
libutil

Algumas das quais você não pode pensar que você precisa, mas as dependências têm um jeito de se aproximar de você.

    
por 08.01.2014 / 08:21