Qual é a vantagem de arquivar os arquivos de objeto C em uma biblioteca estática (arquivo .a)?

1

Quero dizer, ao contrário de apenas ligar para módulos individuais / arquivos de objeto. Por que grupos de módulos são arquivados juntos? Não torna o executável 1. maior e 2. menos seguro (isto é, mais vulnerável a ataques de programação orientada a retorno)?

    
por user628544 13.12.2016 / 14:23

2 respostas

3

O principal recurso das bibliotecas estáticas é o índice de símbolos que permite vincular apenas os membros do arquivo que fornecem símbolos ausentes.

O agrupamento de arquivos de objeto em um único arquivo, ou compactação, é secundário e você pode ter arquivos compactos que não os fazem. (Arquivos finos basicamente apenas fazem referência a arquivos que existem fora do arquivo).

    
por 13.12.2016 / 15:02
1

A vantagem: você tem apenas um arquivo.

Uma biblioteca estática é apenas um arquivo. Você pode colocar e retirar arquivos individuais como quiser. Quando você vincula um programa, apenas os arquivos apropriados são extraídos e vinculados.

Nota: se você estiver usando uma distribuição do Linux com dpkg , estará usando a mesma ferramenta de arquivamento para bibliotecas e pacotes (e possivelmente aninhada em um pacote -dev).

    
por 13.12.2016 / 14:58