Existe alguma relação entre links binários e links simbólicos?

4

Esta é quase certamente uma questão muito estúpida, então será fácil responder. Existe alguma relação entre a vinculação de binários (como na vinculação dinâmica ou estática) e links simbólicos. Eles interagem de alguma forma, ou compartilham um pouco da história, ou são esses dois conceitos completamente ortogonais que por acaso são chamados da mesma forma?

    
por spelufo 28.12.2014 / 04:07

2 respostas

4

Nada disso. Um envolve o redirecionamento de todas as referências a um nome de arquivo (qualquer tipo de arquivo) para um arquivo diferente (symlinks) e o outro envolve a construção de uma imagem executável copiando o código de uma biblioteca para o executável (vinculação estática) ou referenciando uma biblioteca dinâmica que contém o código requerido e carrega essa biblioteca dinâmica em tempo de execução.

    
por 28.12.2014 / 04:19
0

Sim, eles compartilham um senso comum da palavra "link", no sentido abstrato de "usar uma chave (de texto) para procurar um recurso nomeado". É útil começar olhando para o tipo "regular" de link de arquivo, o link físico.

Um link físico é uma entrada em um diretório Unix que associa um nome a um arquivo específico no disco, apontando para seu inode . Quando o arquivo é acessado (aberto, stat ed), o driver do sistema de arquivos procura o inode correspondente ao nome solicitado. O diretório é uma tabela que conecta nomes com números de inode; Nesta listagem, o número na frente é o inode em que o arquivo está armazenado:

6951168 -rwxr-xr-x 1 christopher christopher 209 Apr 24  2014 CAPS
6951172 -rwxr-xr-x 1 christopher christopher 976 Aug  6  2012 offline
6951175 -rwxr-xr-x 1 christopher christopher 541 Apr  8  2014 records-backup.sh
6950166 -rwxr-xr-x 1 christopher christopher 778 Nov  4 07:05 switch-monitors.sh

Um link simbólico é um recurso que, em vez de apontar diretamente para o inode, aponta para um pequeno arquivo de texto especial que possui um caminho relativo dentro dele. Para a maioria das finalidades, ele procura programas como um link físico regular e recebeu o nome por analogia.

Um vinculador no sentido de ld.so realiza uma operação análoga ao uso de links físicos pelo sistema de arquivos. Os programas C (e compatíveis) usam uma tabela de símbolos que lista os nomes das funções que o programa deseja chamar de outras bibliotecas. O vinculador procura a localização da memória para a função correspondente a cada nome solicitado e a preenche (a maneira precisa varia).

    
por 28.12.2014 / 06:34