Maneira adequada de vincular uma biblioteca estática usando o GCC

Por que algumas bibliotecas estáticas (lib * .a) podem ser vinculadas da mesma maneira que as bibliotecas compartilhadas (lib * .so) são vinculadas (opção ld -l), mas outras nã

Sempre fui ensinado que todas as bibliotecas, estáticas ou não, podem ser vinculadas com -l ..., no entanto, já encontrei uma biblioteca até agora (GLFW), que não faz nada além de exibir erros de link de "referência indefinida" se Tento vinculá-lo dessa maneira.

De acordo com a resposta emessa questã, a maneira "correta" de vincular bibliotecas estáticas é incluí-las diretamente, juntamente com meus próprios arquivos de objeto, em vez de usar -l. E, no caso da biblioteca GLFW, isso certamente resolve o problema. Mas todas as outras bibliotecas estáticas que estou usando funcionam muito bem quando vinculadas com -l.

Então

O que poderia fazer com que essa biblioteca não funcionasse quando vinculada ao invés de incluída diretamente? Se eu soubesse a causa, talvez eu pudesse editar e recompilar a biblioteca para corrigir o problem É verdade que você não deve vincular bibliotecas estáticas da mesma maneira que vincula bibliotecas compartilhadas? (E se não, por que não? O vinculador ainda consegue eliminar as funções de biblioteca não utilizadas da saída executável quando a biblioteca é diretamente incluída dessa maneira?