dietlibc e musl - O melhor dos dois mundos

dietlibc-e-musl
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)
Nesta imagem podemos ver com o minit compõe-se de 10 binários linkados estaticamente e tem apenas 120k
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:
  1. O que biblioteca dinâmica e o que é biblioteca estática?
  2. 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
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.
Conferindo as depenicas do minit
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 entre musl, uClibc, dietlibc e glibc
Tabela comparativa de recursos e tamanhos entre musl, uClibc, dietlibc e glibc
Tamanho final com cada biblioteca.
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.

Compartilhe isso

Leia outros posts

Próximo post
« Próximo post
Post Anterior
Próximo Post »