Erreur permettant openmp - “ld: bibliothèque introuvable -lgomp” et Clang erreurs
Je vais essayer d'obtenir openmp pour exécuter dans mon programme sur Mavericks, cependant lorsque j'essaie de compiler en utilisant le drapeau -fopenmp
j'obtiens l'erreur suivante:
ld: library not found for -lgomp
clang: error: linker command failed with exit code 1 (use -v to see invocation)
La commande, je suis en cours d'exécution est:
gcc myProgram.cpp -fopenmp -o myProgram
Aussi, quand je lance gcc-je obtenir Clang mises en garde, que je trouve très étrange. Et en le regardant dans /usr/bin/gcc, il n'apparaît pas de lien de Clang.
Des suggestions sur la façon de fixer mon Clang erreurs et d'obtenir openmp pour compiler?
- Vous êtes sûr que c'est
gcc
? Pourriez-vous vérifiergcc --version
? - Oui, je suis assez sûr: $gcc --version Configurée avec: -- prefix=/Applications/Xcode.app/Contents/Développeur/usr --with-gxx - inclure-dir=/usr/include/c++/4.2.1 Apple LLVM version 5.0 (clang-500.2.79) (basé sur LLVM 3.3 svn) Cible: x86_64-apple-darwin13.0.0 modèle de Thread: posix`
- Version format semblable à celui clang utilise, et il mentionne LLVM et clang; peut-être dragonegg se comporte de cette façon, mais je doute que (jamais vu ça, désolé). Malheureusement, je n'ai aucune expérience avec osx-à-dire plus que le simple fait que clang ne fonctionne pas avec openmp encore - et de son implication semble être une racine de votre problème. De toute façon, si
--version
n'a pas dit que c'est de la FSF gcc - alors, je pense qu'il n'est pas. - Liées, pour les compilateurs qui prennent en charge OpenMP, voici les 3 deuxième tutoriel: Comment Compiler et Exécuter un Programme OpenMP.
Vous devez vous connecter pour publier un commentaire.
La
gcc
de commande dans le dernier Xcode suite n'est plus la GCC frontend pour LLVM (basé sur le très vieux GCC 4.2.1), mais plutôt un lien symbolique versclang
. Clang n'a pas (encore) de support d'OpenMP. Vous devez installer séparément une autre version de GCC, par exemple en suivant ce tutoriel ou en utilisant l'un des logiciels de systèmes de gestion de paquets comme MacPorts et Homebrew.brew install gcc49
], mais il semble toujours comme gcc est lié à Clang.$g++ --version Configured with: -- prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn) Target: x86_64-apple-darwin13.0.0 Thread model: posix
Dois-je en quelque sorte de définir manuellement le lien pour gcc utiliser gcc 4.9 au lieu de clang?/usr/local
. Assurez-vous que/usr/local/bin
est dans votre$PATH
et qu'il précède/usr/bin
. Il est également possible que la GCC binaires qui viennent de Homebrew sont suffixé avec la version, par exemplegcc-4.9
au lieu de simplementgcc
.Je viens récemment attaqué à ce problème et ont adapté le processus d'obtention de tout travail basé sur la les instructions officielles.
Le script télécharge le tout dans ~/code pour un entretien facile et d'ajouter les variables d'environnement correctes à votre ~/.le fichier de profil. Pour les utilisateurs avancés, choisissez un endroit agréable, vous voulez la lib, bin et comprennent installés et de les déplacer manuellement. Le script dépend de la connaissance de la dernière OpenMP exécution d'Intel, qui peut être modifiée en haut du script.
Le script doit fonctionner hors de la boîte avec de la vanille Mavericks, sauf pour un petit problème. Dans le OpenML runtime faire un script, il n'est pas fiable accepter clang lorsque spécifié et se poursuit avec la valeur par défaut de GCC. En tant que tel, si vous n'avez pas de GCC installé (ce qui n'est pas normal sur la sortie de la boîte de Mavericks), il ne pourra pas construire. Pour résoudre ce problème, vous devez en commentaire les deux lignes (comme indiqué dans le script) basé sur le libomp_20131209_oss.tgz construire d'OpenMP. De plus nouvelles versions de OpenML pourrait briser ce script, donc à utiliser à vos risques et périls sur les versions plus récentes.
Il vous suffit d'enregistrer ce script dans un fichier, exécuter la commande 'chmod +x filename.sh "et lancer". /filename.sh' depuis le terminal. Il faudra un certain temps pour construire LLVM et Clang, donc soyez patient.
EDIT: Ce script va probablement échouer sur Yosemite et je vais avoir des problèmes en utilisant le construit clang2 après la mise à jour de la dev versions d'OSX 10.10.
clang: error: unknown argument: '-no-intel-extensions' [-Wunused-command-line-argument-hard-error-in-future] clang: note: this will be a hard error (cannot be downgraded to a warning) in the future
). Mon hack a été de mettre en commentaire la ligne 433 en "src/makefile.mk". Cela supprime l'option non reconnue.Si vous exécutez homebrew vous pouvez résoudre ce problème en appelant le:
Le compilateur sera disponible sous
clang-omp++
nomError: No available formula with the name "clang-omp"
Simplement travaillé par le biais de ce problème. Voici la réponse ainsi que la manière de l'obtenir travaillé avec Xcode.
De prendre la dernière version d'openMP bibliothèque d'exécution de
https://www.openmprtl.org/download
de décompresser et de le compiler
installer en
Saisir openmp/clang à partir de Git en suivant les instructions sur http://clang-omp.github.io/
compiler openmp/clang
normalement, il serait d'installer llvm/clang++ dans /usr/local/bin, nous avons besoin de remplacer la Pomme clang avec notre version
Créer un projet dans Xcode, en utilisant le Bonjour à tout le Monde de code sur clang-openmp site web pour le test. Après avoir créé, ajoutez "-fopenmp" à la Coutume des Drapeaux de compilation -> Autre C Drapeaux dans les paramètres de projet; ajouter
/usr/lib/libiomp5.dylib
pour les phases de construction de projet (project settings -> Phases de construction -> faites Glisser/usr/lib/libiomp5.dylib
en Lien Binaire avec les Bibliothèques)Il devrait fonctionner. Yosemite + Xcode 6 est testé.
Remarque: la coutume clang n'est PAS aussi stable que d'Apple. Revenez si vous rencontrez d'étranges instruction d'erreur après avoir compilé.