Onde defino DYLD_LIBRARY_PATH no Mac OS X e é uma boa ideia?
Estou tentando instalar um solver escrito em C ++ no meu Mac (OS X), para uso com o código que escrevi no XCode.
A documentação do solucionador diz isso:
Certifique-se de ter "." no seu DYLD_LIBRARY_PATH, a fim de
executar os executáveis ​​prontos
link com o libamg.dylib (e os RTSlibs gfortran)
Eu realmente não entendo o que isso significa. Onde e o que eu preciso para mudar o quê?
Eu pesquisei no Google, mas não encontrei nada que seja simples o suficiente para um novato como eu! Se houver pessoas pacientes por aí que não se importariam em me direcionar para um recurso on-line ou me fornecer os detalhes de como e onde definir variáveis ​​de ambiente, ficaria muito grato.
É uma variável de ambiente e, como tal, geralmente é definida no Terminal por
man dyld diz:
Esta é uma lista separada por dois pontos de diretórios que contêm bibliotecas. O vinculador dinâmico pesquisa esses diretórios antes de pesquisar as bibliotecas nos locais padrão. Ele permite testar novas versões de bibliotecas existentes.
Para cada biblioteca que um programa usa, o vinculador dinâmico procura por cada diretório DYLD_LIBRARY_PATHpor sua vez. Se ainda não conseguir encontrar a biblioteca, ela pesquisa DYLD_FALLBACK_FRAMEWORK_PATHe, DYLD_FALLBACK_LIBRARY_PATHpor sua vez.
Use a -Lopção para otool(1). para descobrir as estruturas e bibliotecas compartilhadas às quais o executável está vinculado.
Você provavelmente iria querer algo como
para anexar .(diretório atual) à lista de locais pesquisados. No meu OS X não modificado, DYLD_LIBRARY_PATHnão tem valor atual:
Dependendo de como você pretende executar o seu programa, você precisará definir isso de forma diferente, por exemplo, no Xcode (não sei onde).
Concordo com o @TVNshack que você normalmente não deve definir DYLD_LIBRARY_PATHnem DYLD_FRAMEWORK_PATHporque pode impedir que as bibliotecas carregadas encontrem bibliotecas fornecidas pelo sistema. Para que isso funcione melhor, use as FALLBACKversões. Mais informações nesta resposta: stackoverflow.com/a/3172515/43615
— SuperTempel
Nunca se deve definir export DYLD_LIBRARY_PATHno seu sistema.
Os caminhos da biblioteca compartilhada podem ser corrigidos usando otool -Le install_name_tool.
Por exemplo, se você compilar o Perl DBD-MySQL, não poderá usá-lo, pois o vinculador não sabe onde você instalou o MySQL.
Isto é tão simples assim.
Quick FYI: install_name_tool com falha silenciosa se o novo caminho for maior que o caminho que está substituindo. Sempre verifique com 'otool -L' se o caminho foi alterado conforme o esperado.
— user15685
Digamos que eu compile um plug-in (basicamente uma biblioteca dinâmica por si só) que depende de outra biblioteca dinâmica. Como devo fornecer o plug-in e suas dependências para outros usuários?
— Royi 28/10/16
Se você em vez definido DYLD_FALLBACK_FRAMEWORK_PATH, ele faz o trabalho neste caso. Isso é muito mais fácil do que alterar os caminhos internos das bibliotecas, especialmente se você precisar entregar os dylibs criados com seu aplicativo e não puder prever o caminho em que eles acabam.
No Xcode 4, você pode adicioná-lo ao projeto Scheme para evitar erros como este:
No menu, clique em "Produto" -> "Editar esquema" -> guia "Argumentos" -> Adicionar "Variáveis ​​de ambiente" -> Chave: DYLD_LIBRARY_PATH Valor: / Users / MyUserAccount / path / to / lib