São ambos que são perfeitamente válidos .
O esquema de nomenclatura no estilo ld.so
é amplamente histórico; o primeiro vinculador dinâmico nesse estilo foi o SunOS 4, que recebeu o nome ld.so
(tenho sua história em algum lugar, vou esclarecer isso depois que o encontrar). Mas existem razões válidas para que seja nomeado como uma biblioteca compartilhada em vez de um executável, incluindo:
- existe para servir executáveis, como bibliotecas compartilhadas (não tem propósito sem executar executáveis);
- é um objeto ELF compartilhado, mas não exige um intérprete (não tem
.interp
entry); isso é típico das bibliotecas (os executáveis compartilhados sempre exigem um intérprete; caso contrário, eles são estáticos, não dinâmicos).
A distinção entre executáveis e bibliotecas é um tanto fluida no ELF; qualquer objeto ELF com um ponto de entrada pode ser um executável, independentemente de suas outras propriedades.