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


8

Enquanto os dois são chamados de "vinculador" e são usados ​​para vincular binários, não consigo descobrir como eles diferem um do outro. Alguém pode me dizer suas diferenças?

Respostas:


8

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

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

As letras sosão, acredito, abreviação de "objeto compartilhado", e você geralmente o vê como um sufixo de nome de arquivo de bibliotecas compartilhadas, ou seja, bibliotecas que podem ser dinamicamente vinculadas a programas (uma biblioteca é "compartilhada" entre vários programas) . Por outro lado, uma biblioteca estática geralmente possui o sufixo do nome do arquivo .a, para "archive" (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 com todas as bibliotecas 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 no tempo de compilação no espaço de endereço do processo no tempo de execução.

Consulte os manuais para lde ld.sono seu sistema.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.