A ideia é que o compilador transforme o arquivo .c em .o, o chamado arquivo objeto. O próximo usa ar
para criar uma biblioteca, um arquivo que deve conter várias funções C compiladas, que podem ser reutilizadas. Finalmente, ld
realiza a vinculação, criando .so ou ELF a partir de arquivos .o e .a especificados. Devido a essa complexidade desnecessária, a maioria dos compiladores também são front-ends para ld e ar bintools.
Para substituir o caminho onde o compilador / vinculador procura por bibliotecas, usa-se a opção --library-path = searchdir. Embora eu esteja apenas respondendo a pergunta, você não precisa de um arquivo realmente para ELF vinculado estaticamente.
Então, qual módulo (arquivo .o) você precisa vincular para usar funções específicas? Geralmente você deve procurar o arquivo .c, por padrão o arquivo xyz.c é compilado em xyz.o, então você precisará disto.