Como Baixar libc.so.6
Se você for um usuário do Linux, pode ter encontrado a mensagem de erro "erro ao carregar bibliotecas compartilhadas: libc.so.6: não é possível abrir o arquivo de objeto compartilhado: nenhum arquivo ou diretório" ao tentar executar alguns programas ou comandos. Isso significa que seu sistema está sem o arquivo de biblioteca libc.so.6, que é um componente vital da GNU C Library (glibc). Neste artigo, explicaremos o que é libc.so.6, como verificar se você o tem instalado, como baixá-lo e instalá-lo em diferentes distribuições do Linux e como corrigir alguns erros comuns com ele.
download libc.so.6
O que é libc.so.6 e por que você precisa dele?
Libc.so.6 é um link simbólico que aponta para a localização da biblioteca glibc, que é a biblioteca principal da linguagem de programação C e fornece funções básicas como entrada/saída, alocação de memória, manipulação de strings, operações matemáticas, chamadas de sistema e muito mais. Muitos aplicativos no Linux dependem dessa biblioteca para funcionar corretamente, por isso é essencial tê-la instalada em seu sistema.
Como verificar se você tem libc.so.6 instalado em seu sistema?
Usando a linha de comando
Uma maneira de verificar se você tem libc.so.6 instalado em seu sistema é usar a ferramenta de linha de comando Onde é, que localiza os arquivos binários, de origem e de página de manual para um comando. Por exemplo, você pode executar:
onde está libc.so.6
Isso mostrará o caminho do link simbólico e o arquivo de biblioteca real para o qual ele aponta. Por exemplo, no meu sistema, recebo:
libc.so.6: /lib/x86_64-linux-gnu/libc.so.6 /lib64/libc.so.6
Isso significa que tenho as versões de 64 bits e 32 bits da biblioteca instaladas em /lib/x86_64-linux-gnu e /lib64 respectivamente.
Usando o gerenciador de pacotes
Outra forma de verificar se você tem libc.so.6 instalado em seu sistema é usar o gerenciador de pacotes de sua distribuição Linux, que também pode informar o nome e a versão do pacote que fornece a biblioteca.Por exemplo, em sistemas baseados em Red Hat, você pode usar yum ou dnf para correr:
yum whatprovides */libc.so.6
Isso mostrará o nome e a versão do pacote que fornece o arquivo de biblioteca para arquiteturas de 64 bits e 32 bits. Por exemplo, no meu sistema, recebo:
glibc-2.28-164.el8.x86_64 : As bibliotecas GNU libc Repo : @System Correspondente de: Filename : /lib64/libc.so.6 glibc-2.28-164.el8.i686 : As bibliotecas GNU libc Repo : baseos Correspondente de: Filename : /lib/libc.so.6
Isso significa que tenho o pacote glibc versão 2.28-164.el8 instalado para ambas as arquiteturas.
Em sistemas baseados em Debian, você pode usar dpkg ou arquivo apt para correr:
dpkg -S libc.so.6
Isso mostrará o nome e a versão do pacote que fornece o arquivo de biblioteca para ambas as arquiteturas. Por exemplo, no meu sistema, recebo:
libc6:amd64: /lib/x86_64-linux-gnu/libc.so.6 libc6:i386: /lib/i386-linux-gnu/libc.so.6
Isso significa que tenho o pacote libc6 para ambas as arquiteturas.
Em sistemas baseados no Ubuntu, você pode usar apto ou arquivo apt para correr:
pesquisa de arquivo apt libc.so.6
Isso mostrará o nome e a versão do pacote que fornece o arquivo de biblioteca para ambas as arquiteturas. Por exemplo, no meu sistema, recebo:
libc6: /lib/x86_64-linux-gnu/libc.so.6 libc6:i386: /lib/i386-linux-gnu/libc.so.6
Isso significa que tenho o pacote libc6 para ambas as arquiteturas.
Como baixar e instalar libc.so.6 em diferentes distribuições Linux?
Em sistemas baseados em Red Hat
Se estiver usando um sistema baseado em Red Hat, como CentOS, Fedora ou RHEL, você pode usar yum ou dnf para baixar e instalar libc.so.6. Por exemplo, você pode executar:
yum instalar glibc
Isso instalará o pacote glibc e suas dependências, que incluem libc.so.6, para a arquitetura do seu sistema. Você também pode especificar a arquitetura se quiser instalar a biblioteca para outra. Por exemplo, você pode executar:
yum instalar glibc.i686
Isso instalará o pacote glibc e libc.so.6 para a arquitetura de 32 bits.
Em sistemas baseados em Debian
Se você estiver usando um sistema baseado em Debian, como Debian, Ubuntu ou Mint, poderá usar apto ou apt-get para baixar e instalar libc.so.6. Por exemplo, você pode executar:
apt instalar libc6
Isso instalará o pacote libc6 e suas dependências, que incluem libc.so.6, para sua arquitetura de sistema. Você também pode especificar a arquitetura se quiser instalar a biblioteca para outra. Por exemplo, você pode executar:
apt instalar libc6:i386
Isso instalará o pacote libc6 e libc.so.6 para a arquitetura de 32 bits.
Em sistemas baseados no Ubuntu
Se você estiver usando um sistema baseado no Ubuntu, como Ubuntu, Kubuntu ou Xubuntu, você pode usar apto ou apt-get para baixar e instalar libc.so.6 também. No entanto, pode ser necessário ativar primeiro o repositório multiverso, que contém pacotes que não são gratuitos ou de código aberto. Para fazer isso, você pode executar:
sudo add-apt-repository multiverse sudo apt update
Isso adicionará o repositório multiverso à sua lista de fontes e atualizará seu índice de pacotes. Então, você pode executar:
sudo apt instalar libc6
Isso instalará o pacote libc6 e suas dependências, que incluem libc.so.6, para sua arquitetura de sistema. Você também pode especificar a arquitetura se quiser instalar a biblioteca para outra. Por exemplo, você pode executar:
sudo apt install libc6:i386
Isso instalará o pacote libc6 e libc.so.6 para a arquitetura de 32 bits.
Como corrigir erros comuns com libc.so.6?
Biblioteca não encontrada ou ausente
Se você receber uma mensagem de erro como "erro ao carregar bibliotecas compartilhadas: libc.so.6: não é possível abrir arquivo de objeto compartilhado: nenhum arquivo ou diretório", isso significa que seu sistema não pode localizar ou acessar o arquivo de biblioteca exigido pelo programa ou comando que você está tentando executar. Isso pode ser devido a vários motivos, como:
O arquivo de biblioteca não está instalado em seu sistema.
O arquivo de biblioteca está instalado, mas em um local diferente do esperado.
O arquivo de biblioteca está corrompido ou danificado.
O arquivo de biblioteca tem permissões ou propriedade insuficientes.
O arquivo de biblioteca é incompatível com a arquitetura do seu sistema ou versão do sistema operacional.
Para corrigir esse erro, você pode tentar as seguintes etapas:
Verifique se você tem libc.so.6 instalado em seu sistema usando os métodos descritos acima.
Se você não o tiver instalado, faça o download e instale-o usando os métodos descritos acima.
Se você o instalou, mas em um local diferente do esperado, crie um link simbólico para o local correto usando o ln comando. Por exemplo, se seu arquivo de biblioteca estiver localizado em /lib/x86_64-linux-gnu/libc.so.6 mas seu programa espera isso em /lib64/libc.so.6, você pode correr:
sudo ln -s /lib/x86_64-linux-gnu/libc.so.6 /lib64/libc.so.6
Se seu arquivo de biblioteca estiver corrompido ou danificado, reinstale-o usando os métodos descritos acima.
Se o arquivo da sua biblioteca não tiver permissões ou propriedade insuficientes, altere-os usando o chmod e chown comandos. Por exemplo, se seu arquivo de biblioteca pertencer ao root e não tiver permissões de leitura ou execução para outros usuários, você poderá executar:
sudo chmod 755 /lib/x86_64-linux-gnu/libc.so.6 sudo chown root:root /lib/x86_64-linux-gnu/libc.so.6
Se o arquivo da sua biblioteca for incompatível com a arquitetura do seu sistema ou versão do sistema operacional, baixe e instale a versão apropriada para o seu sistema usando os métodos descritos acima.
Caminho da biblioteca não configurado
Se você receber uma mensagem de erro como "erro ao carregar bibliotecas compartilhadas: libc.so.6: não é possível abrir arquivo de objeto compartilhado: nenhum arquivo ou diretório", isso também pode significar que seu sistema não pode encontrar o arquivo de biblioteca porque ele não está no caminho de pesquisa do vinculador dinâmico, que é o programa que carrega e vincula bibliotecas compartilhadas em tempo de execução. O caminho de pesquisa do vinculador dinâmico é determinado por vários fatores, como:
A variável de ambiente LD_LIBRARY_PATH, que especifica uma lista de diretórios para procurar bibliotecas compartilhadas.
O arquivo de configuração /etc/ld.so.conf, que especifica uma lista de diretórios para procurar bibliotecas compartilhadas.
O arquivo de cache /etc/ld.so.cache, que contém uma lista compilada de diretórios e bibliotecas compartilhadas de /etc/ld.so.conf e outras fontes.
Os diretórios padrão /lib e /usr/lib, que são sempre procurados por bibliotecas compartilhadas.
O runpath ou rpath incorporado no executável ou na biblioteca compartilhada, que especifica uma lista de diretórios para pesquisar bibliotecas compartilhadas em relação ao local do executável ou da biblioteca compartilhada.
Para corrigir esse erro, você pode tentar as seguintes etapas:
Verifique se o arquivo da sua biblioteca está em um dos diretórios padrão /lib ou /usr/lib. Caso contrário, mova-o para lá ou crie um link simbólico para ele usando o mv ou ln comandos.
Verifique se o arquivo da sua biblioteca está em um dos diretórios especificados pela variável de ambiente LD_LIBRARY_PATH. Caso contrário, adicione-o ou exporte-o antes de executar seu programa ou comando. Por exemplo, se seu arquivo de biblioteca estiver localizado em /home/user/lib/libc.so.6, você pode correr:
export LD_LIBRARY_PATH=/home/user/lib:$LD_LIBRARY_PATH ./seu_programa
Verifique se seu arquivo de biblioteca está em um dos diretórios especificados pelo arquivo de configuração /etc/ld.so.conf. Caso contrário, adicione-o ou crie um novo arquivo de configuração em /etc/ld.so.conf.d com o nome do seu arquivo de biblioteca e seu diretório. Por exemplo, se seu arquivo de biblioteca estiver localizado em /opt/lib/libc.so.6, você pode criar um arquivo chamado /etc/ld.so.conf.d/libc.so.6.conf com o seguinte conteúdo:
/opt/lib Execute o comando sudo ldconfig para atualizar o arquivo de cache /etc/ld.so.cache com os novos diretórios e bibliotecas compartilhadas.
Verifique se sua biblioteca executável ou compartilhada possui um runpath ou rpath incorporado que especifica uma lista de diretórios para pesquisar bibliotecas compartilhadas em relação à sua localização. Você pode usar o comando readelf -d para verificar isso. Por exemplo, recebo:
0x000000000000001d (RUNPATH) Caminho de execução da biblioteca: [/home/user/lib]
Isso significa que meu executável tem um caminho de execução que aponta para /home/usuário/lib. Se este diretório não contiver o arquivo de biblioteca de que preciso, posso movê-lo para lá ou alterar o caminho de execução usando o comando patchelf. Por exemplo, posso executar:
patchelf --set-rpath /opt/lib ./seu_programa
Isso mudará o caminho de execução do meu executável para /opt/lib, que contém o arquivo de biblioteca de que preciso.
Versão ou arquitetura da biblioteca incorreta
Se você receber uma mensagem de erro como "erro ao carregar bibliotecas compartilhadas: libc.so.6: classe ELF errada: ELFCLASS64", isso significa que seu sistema está tentando carregar um arquivo de biblioteca que possui uma versão ou arquitetura diferente daquela esperada pelo programa ou comando que você está tentando executar. Isso pode ser devido a vários motivos, como:
Você instalou a versão ou arquitetura errada do arquivo de biblioteca em seu sistema.
Você tem várias versões ou arquiteturas do arquivo de biblioteca em seu sistema e o vinculador dinâmico está escolhendo o errado.
Você tem uma incompatibilidade entre a versão ou arquitetura de sua biblioteca executável ou compartilhada e o arquivo de biblioteca do qual ela depende.
Para corrigir esse erro, você pode tentar as seguintes etapas:
Verifique a versão e a arquitetura do seu arquivo de biblioteca usando o comando arquivo. Por exemplo, você pode executar:
arquivo /lib/x86_64-linux-gnu/libc.so.6
Isso mostrará o tipo e os detalhes do seu arquivo de biblioteca. Por exemplo, recebo:
/lib/x86_64-linux-gnu/libc.so.6: link simbólico para libc-2.31.so /lib/x86_64-linux-gnu/libc-2.31.so: ELF objeto compartilhado LSB de 64 bits, x86-64, versão 1 (GNU/Linux), vinculado dinamicamente, interpretador /lib64/ld-linux-x86-64.so.2, BuildID[ sha1]=f70ab74c4d0a9b6f5e8a7f7c16877f4b0ebd3c36, para GNU/Linux 3.2.0, removido
Isso significa que tenho uma versão de 64 bits de libc.so.6 com a versão 2.31.
Verifique a versão e a arquitetura do seu programa ou comando usando o mesmo comando arquivo. Por exemplo, você pode executar:
arquivo ./seu_programa
Isso mostrará o tipo e os detalhes de sua biblioteca executável ou compartilhada. Por exemplo, recebo:
./your_program: ELF 32-bit LSB executável, Intel 80386, versão 1 (SYSV), vinculado dinamicamente, interpretador /lib/ld-linux.so.2, para GNU/Linux 3.2.0, BuildID[sha1]=a9b8c7c4d81a9b6f5e8a7f7c16877f4b0ebd3c36, não removido
Isso significa que tenho um executável de 32 bits com a versão 1.
Se houver uma incompatibilidade entre a versão ou arquitetura de seu arquivo de biblioteca e seu programa ou comando, baixe e instale a versão ou arquitetura correta do arquivo de biblioteca usando os métodos descritos acima.
Se você tiver várias versões ou arquiteturas do arquivo de biblioteca em seu sistema e o vinculador dinâmico estiver escolhendo o errado, use um dos métodos descritos acima para especificar o caminho ou diretório correto para o arquivo de biblioteca.
Conclusão
Neste artigo, aprendemos como baixar libc.so.6 em diferentes distribuições do Linux e como corrigir alguns erros comuns com ele. Esperamos que este artigo tenha sido útil para você e que agora você possa executar seus programas e comandos sem problemas com libc.so.6.
perguntas frequentes
O que é glibc?
Glibc é a abreviação de GNU C Library, que é a biblioteca principal da linguagem de programação C e fornece funções básicas como entrada/saída, alocação de memória, manipulação de strings, operações matemáticas, chamadas de sistema e muito mais.
O que é ELF?
ELF é a abreviação de Executable and Linkable Format, que é um formato de arquivo padrão para executáveis, bibliotecas compartilhadas e arquivos de objeto no Linux e outros sistemas semelhantes ao Unix.
O que é ldconfig?
Ldconfig é um comando que cria e atualiza o arquivo de cache /etc/ld.so.cache, que contém uma lista compilada de diretórios e bibliotecas compartilhadas usadas pelo vinculador dinâmico para localizar e carregar bibliotecas compartilhadas em tempo de execução.
O que é patchelf?
Patchelf é um comando que permite modificar as propriedades dos arquivos ELF, como alterar o runpath ou rpath, adicionar ou remover dependências, alterar o interpretador e muito mais.
O que é um link simbólico?
Um link simbólico é um tipo especial de arquivo que aponta para outro arquivo ou diretório. Ele atua como um atalho ou alias para o arquivo ou diretório de destino. Você pode criar um link simbólico usando o ln comando com o -s opção. 0517a86e26
Comments