2020-07-09 – Post para amigos sobre librarias estáticas e dinâmicas em C++
Uma foto de 09 de Julho, em que mostro alguma variações do tamanho do executável do “Knowledge Tester”, com ou sem librarias estáticas, explicado abaixo com a descrição que partilhei na altura:
«O tamanho real dos executáveis em Linux, caso estejam com librarias dinâmicas (não incluídas no executável, vão buscá-las ao sistema operativo), ou estáticas (embutidas no próprio executável).
Podem ver que há uma grande diferença, passando dos 300/400kb aos mais de 3 megas.
Claro que compactando os executáveis depois, ficam com 100KB ao invés de 372KB, ou nas estáticas, passando dos 3.69MB para 828KB.
Podem ver que as librarias usadas são apenas as standard de C++, incluindo a pthread porque uso threading. Mas aplicada ao das librarias estáticas, deixa de estar visível obviamente, a dependência, pois deixa de as ter.
Mas por muito que eu encolha o código, e elimine redundâncias, quando são dezenas de milhares de linhas de código, com texto embutido de 60KB ou 70KB (comandos Cisco embutidos no código), nunca poderá ser pequeno, mais tarde tentarei reduzir ainda mais o tamanho do executável, dos 370KB para uns 250KB, e comprimido depois para uns 90KB, mas é irrelevante, nunca poderei ter um executável infinitamente pequeno, se tem dezenas de milhares de linhas de código tem te ser minimamente grande o executável.
Claro que a versão final não terá as librarias estáticas, terá um pacote de instalação que as manda instalar se necessário.
Mas pronto, é este o tamanho actual dos executáveis do Knowledge Tester, com Simulador IOS, laboratórios de teste, menus, subnetting, perguntas e respostas (sistema de testes), e automatizador de comandos Cisco, tudo incluído.
Não parece mal ter algo a rondar os 100KB no final.
2020-07-10 – 00h10.»