É ineficiente ter links simbólicos para links simbólicos?

É ineficiente ter links simbólicos para links simbólicos?

Estamos configurando uma série de Makefiles onde queremos ter um diretório de inclusão em nível de projeto que terá links simbólicos para arquivos de inclusão em nível de subprojeto. Muitos desenvolvedores de subprojetos optaram por que seus arquivos de inclusão também fossem links simbólicos para outro diretório onde o software real está localizado.

Então, minha pergunta é: é ineficiente ter um link simbólico para um link simbólico para outro arquivo (para, digamos, um cabeçalho C++ que pode ser incluído dezenas ou mais vezes durante uma compilação)?

Exemplo de árvore de diretórios:

/project/include/
                 x_header1.h -> /project/src/csci_x/include/header1.h
                 x_header2.h -> /project/src/csci_x/include/header2.h
/project/src/csci_x/
                    include/
                            header1.h -> /project/src/csci_x/local_1/cxx/header1.h
                            header2.h -> /project/src/csci_x/local_2/cxx/header2.h
                    local_1/cxx/
                                module1.cpp
                                header1.h
                    local_2/cxx/
                                module2.cpp
                                header2.h

Responder1

Não tenho certeza do que você quer dizer com ineficiente, mas meu palpite é 'não'.

O kernel lida com todos os links simbólicos, o gnumake apenas faz um open() e obtém o arquivo. Qualquer aplicativo de nível de usuário não se importa (bem, raramente se importa) se é um link simbólico ou não, apenas obtém o arquivo.

Os níveis extras de links simbólicos pelos quais o kernel precisa passar são insignificantes em comparação ao tempo de compilação e gravação/liberação do cache no disco.

informação relacionada