J'essaie d'installer un solveur écrit en C++ sur mon Mac (OS X), à utiliser avec le code que j'ai écrit en XCode.
La documentation du solveur dit ceci:
Assurez-vous d'avoir "." dans votre
DYLD_LIBRARY_PATH
afin de
- exécuter les exécutables prêts à l'emploi
- lien avec le libamg.dylib (et le gfortran RTSlibs)
Je ne comprends pas vraiment ce que cela signifie. Où et de quoi ai-je besoin pour changer quoi?
J'ai fait quelques recherches sur Google, mais je n'ai rien trouvé qui soit assez simple pour un débutant comme moi! S'il y a des patients qui voudraient bien me diriger vers une ressource en ligne ou me donner les a-b-cs de comment et où définir les variables d'environnement, je vous en serais très reconnaissant.
C’est une variable d’environnement et, en tant que telle, elle est généralement définie dans Terminal par
export DYLD_LIBRARY_PATH=someValue
man dyld
dit:
DYLD_LIBRARY_PATH
Cette liste de répertoires contenant des bibliothèques est séparée par des deux-points. L'éditeur de liens dynamique recherche ces répertoires avant de rechercher les bibliothèques par défaut dans les emplacements par défaut. Il vous permet de tester de nouvelles versions de bibliothèques existantes.
Pour chaque bibliothèque utilisée par un programme, l'éditeur de liens dynamique le recherche successivement dans chaque répertoire dans
DYLD_LIBRARY_PATH
. S'il ne peut toujours pas trouver la bibliothèque, il recherche ensuiteDYLD_FALLBACK_FRAMEWORK_PATH
etDYLD_FALLBACK_LIBRARY_PATH
à tour de rôle.Utilisez l'option
-L
pourotool(1)
. pour découvrir les frameworks et les bibliothèques partagées auxquels l’exécutable est lié.
Vous voudriez probablement quelque chose comme
export DYLD_LIBRARY_PATH=.:$DYLD_LIBRARY_PATH
ajouter le code .
(répertoire en cours) à la liste des emplacements recherchés. DYLD_LIBRARY_PATH
n'a pas de valeur actuelle sur mon OS X non modifié:
$ echo $DYLD_LIBRARY_PATH
$
Selon votre intention d’exécuter votre programme, vous devrez définir cela différemment, par exemple. dans Xcode (je ne sais pas où).
On ne devrait jamais définir export DYLD_LIBRARY_PATH
sur votre système.
Les chemins des bibliothèques partagées peuvent être corrigés avec otool -L
et install_name_tool
.
Par exemple, si vous compilez Perl DBD-MySQL, vous ne pourrez pas l'utiliser car l'éditeur de liens ne sait pas où vous avez installé MySQL.
># make
....
># otool -L blib/Arch/auto/DBD/mysql/mysql.bundle
blib/Arch/auto/DBD/mysql/mysql.bundle:
libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
#> install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib blib/Arch/auto/DBD/mysql/mysql.bundle
># otool -L blib/Arch/auto/DBD/mysql/mysql.bundle
blib/Arch/auto/DBD/mysql/mysql.bundle:
/usr/local/mysql/lib/libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
#> make test
...
Result: PASS
#> make install
C'est aussi simple que ça.
Dans Xcode 4, vous pouvez l'ajouter au projet Scheme pour éviter des erreurs comme celle-ci:
dyld: Library not loaded: @loader_path/libLeap.dylib
Referenced from: /Users/paulsolt/Library/Developer/Xcode/DerivedData/LeapTest-eqcxmzewheyjusgrcszyvlcxlgna/Build/Products/Debug/LeapTest
Reason: image not found
Dans le menu, cliquez sur "Produit" -> "Modifier le schéma" -> onglet "Arguments" -> Ajouter "Variables d'environnement" -> Clé: DYLD_LIBRARY_PATH Valeur:/Users/MyUserAccount/path/to/lib
Modifiez le chemin d'accès à votre compte d'utilisateur et le chemin d'accès complet au dossier de la bibliothèque.
Vous devriez être capable de construire et d’exécuter.