ld linker question: a opção –whole-archive

O único uso real da opção de vinculador --whole-archive que tenho visto é na criação de bibliotecas compartilhadas a partir de estáticas. Recentemente me deparei com Makefile (s) que sempre usam essa opção ao vincular com bibliotecas estáticas internas. Isso, obviamente, faz com que os executáveis ​​extraiam desnecessariamente o código de object não referenciado. Minha reação a isso foi que isso é totalmente errado, estou faltando alguma coisa aqui?

A segunda pergunta que tenho tem a ver com algo que li sobre a opção de todo o arquivo, mas não consegui analisar. Algo no sentido de que --whole-archive opção --whole-archive deve ser usada ao vincular-se a uma biblioteca estática se o executável também se vincular a uma biblioteca compartilhada que, por sua vez, tem (em parte) o mesmo código object da biblioteca estática. Essa é a biblioteca compartilhada e a biblioteca estática tem sobreposição em termos de código de object. O uso dessa opção forçaria todos os símbolos (independentemente do uso) a serem resolvidos no executável. Isso deve evitar a duplicação de código de object. Isso é confuso, se um símbolo for referendado no programa, ele deve ser resolvido exclusivamente no momento do link. O que é esse negócio de duplicação? (Perdoe-me se este parágrafo não é exatamente o epítome da clareza)

obrigado