Diferença entre 'ld' e 'ld.so'?

Diferença entre 'ld' e 'ld.so'?

Embora ambos sejam chamados de "vinculadores" e sejam usados ​​para vincular binários, não consigo entender como eles diferem um do outro. Alguém pode me dizer suas diferenças?

Responder1

Sem ser muito técnico: ambos são "linkers", ou seja, uma ferramenta que combina/carrega um trecho de código compilado com/em outro trecho de código compilado.

ldé um vinculador estático, enquanto ld.soé um vinculador dinâmico.

As letras sosão, acredito, abreviações de "objeto compartilhado", e você geralmente as verá como um sufixo de nome de arquivo de bibliotecas compartilhadas, ou seja, bibliotecas que podem ser vinculadas dinamicamente a programas (uma biblioteca é "compartilhada" entre vários programas) . Por outro lado, uma biblioteca estática geralmente possui o sufixo de nome de arquivo .a, para "arquivo" (criado pelo arutilitário).

Um vinculador estático vincula um programa ou biblioteca em tempo de compilação, geralmente como a última etapa do processo de compilação, criando um executável binário ou uma biblioteca. No caso de um arquivo executável binário, pode ser um binário estático comtodosbibliotecas carregadas no próprio binário, ou pode ser um binário vinculado dinamicamente com apenas algumas bibliotecas vinculadas estaticamente.

Um vinculador dinâmico carrega as bibliotecas que foram vinculadas dinamicamente em tempo de compilação no espaço de endereço do processo em tempo de execução.

Consulte os manuais lddo ld.soseu sistema.

informação relacionada