dietlibc e musl |
Durante a live sobre o minit init system, uma coisa chamou a atenção e chocou os inscritos, o tamanho final dos binários pois são assustadoramente muito pequenos ao ponto que pediram para verificar as dependências dos programas; ou seja, as bibliotecas dinâmicas. A questão é que mesmo sendo tão pequeno, o minit faz uso de biblioteca de forma estática (o que chega a ser mais assustador ainda)
Sequencia de comandos "du", "ls" e "ldd" no diretório minittest para conferir o tamanho total, o que há no diretório e se os binários são linkados dinâmica ou estaticamente. |
CURSO DE SHELL SCRIPT DO MATEUS MÜLLER
Confesso que também fiquei chocado a primeira vez que vi isso coisa de cinco anos atras. Chegava a ser mentalmente inaceitável ver um binário tão pequeno e ter a biblioteca lincada estaticamente ao binário. Talvez você se pergunte o porque e vamos para o arrebento na explicação. Matéria de certificações LPI e LFCS:
- O que biblioteca dinâmica e o que é biblioteca estática?
- Quais as vantagens e desvantagens de ambas?
Assunto já tratado aqui no blog, mas vamos lá
Resposta para a pergunta #1
Biblioteca dinâmica trata-se de programas que dependem de bibliotecas externas que no Linux geralmente as encontramos em diretórios como /lib. no Windows é o que chamamos de DLLs. Portanto, para tal programa funcionar, ele precisará carregar essas bibliotecas e se não forem encontradas, o programa não será executado. A imagem abaixo mostra de quais bibliotecas os Bash depende para estar em funcionamento.
Dependências do Bash |
Já o termo biblioteca estática referem-se a programas que não dependem de bibliotecas para funcionar. Porque? Simples, a/s biblioteca/s já está/ão incorporada/s ao programas e por isso vemos a seguinte mensagem com o comando ldd.
Depenicas do minit |
Resposta para a pergunta #2
Vantagem de programas lincados estaticamente as bibliotecas: Proporciona melhor desempenho por não precisar ficar realizando requisições a bibliotecas e proporciona maior segurança ao programa.
Desvantagem: O programa fica maior ocupando maior espaço em dispositivo de armazenamento e de memória quando em execução já que tudo é incorporado a um binário só.
Bom, se essas são as vantagens e desvantagens das ligações estáticas, as dinâmicas se tornam o inverso, mas se tornam uma solução também para reduzir consumo de hardware.
Curso COMPLETO para a certificação CompTIA Linux+ e LPIC-1 do Mateus Müller do canal 4Fasters
Nesse aspecto, a dietlibc e musl proporcionam o melhor dos dois mundos nos dando o permitindo usufruir dos benefícios de programas lincados estaticamente com o tamanho dos lincados dinamicamente.
Tabela comparativa de recursos e tamanhos entre musl, uClibc, dietlibc e glibc |
Tamanho final com cada biblioteca. |
Foi de onde surgiu a ideia da serie "Muito além do GNU", pois percebi que não usamos Linux com o máximo que ele tem a oferecer, com o seu real potencial, com o seu real poder de fogo (digamos que ainda nem despertamos o sétimo sentido do Linux com armadura de ouro) e deixamos de usufruir de todos esse benefícios em prol a uma paixão.
O bem da verdade é que não sabemos o real potencial do Linux; utilizamos do jeito que está, ficamos satisfeitos e paramos pro aí mesmo (o que não há nada de errado, mas acabamos pro limitar o que podemos fazer).
Vivemos em uma nova época, um novo período onde muitas mudanças benéficas ocorreram e muitas outras ocorrem ou estão ocorrendo no Linux. Essas mudanças beneficiam os desenvolvedores, os sysadmins, os usuários finais, os projetos, comunidades e os ambientes corporativos. Se já estava bom da forma que o utilizamos antes disso tudo, imaginem hoje.
Nenhum comentário:
Postar um comentário
Viu algum erro e quer compartilhar seu conhecimento? então comente aí.
Observação: somente um membro deste blog pode postar um comentário.