2017-09-29 11 views
1

J'essaie de faire un compilateur et j'utilise llvm (C++ api) pour la production de code intermédiaire et final. Bien que lorsque vous essayez d'exécuter la commande:'llvm/IR/Constants.h' fichier non trouvé

llvm.o: llvm.cpp llvm.h 
    $(CPP) llvm.cpp -c -$(FLAGS) 

dans mon fichier makefile je reçois l'erreur:

In file included from llvm.cpp:6: 
./opt.h:5:10: fatal error: 'llvm/IR/Constants.h' file not found 
#include <llvm/IR/Constants.h> 
     ^~~~~~~~~~~~~~~~~~~~~ 
1 error generated. 

J'utilise Mac OS (version Sierra 10.12.6) et je J'ai installé llvm en utilisant le brassage (brew install llvm) donc je ne peux pas comprendre comment le fichier de bibliothèque est introuvable.

Aussi ma version clang:

bash-3.2$ clang --version 
Apple LLVM version 9.0.0 (clang-900.0.37) 
Target: x86_64-apple-darwin16.7.0 
Thread model: posix 
InstalledDir: /Library/Developer/CommandLineTools/usr/bin 

Je l'ai googlé beaucoup mais ne pouvait pas trouver quelque chose qui résout mon problème, toute aide appréciée !!!.

Répondre

2

Quels sont vos DRAPEAUX? Vous devez fournir des indicateurs de liens et des indicateurs de recherche d'en-tête.

Ce qui suit pourrait vous aider:

llvm.o: llvm.cpp llvm.h 
    $(CPP) llvm.cpp -c -$(FLAGS) `llvm-config --cxxflags --ldflags --libs` 

Notez que le --libs sans aucun paramètre reliera votre binaire avec toutes les bibliothèques LLVM.

UPD:

Sur MacOS LLVM-config et d'autres outils ne sont pas ajoutés au $PATH, car il emporterait compilateur du système et peut visser votre système en quelque sorte. Vous devrez utiliser le chemin complet, par ex. /usr/local/Cellar/llvm/3.9.0/bin/llvm-config. Assurez-vous d'utiliser la bonne version ici.

Aussi, assurez-vous que vos FLAGS sont effectivement évalués et non collé à la commande comme est:

FLAGS=$(shell llvm-config --cxxflags --ldflags --libs) 
+0

Merci pour la réponse, mes drapeaux: 'LLVM-config-3,8 --cxxflags --ldflags - libs --system-libs' mais aussi un autre problème que je n'ai pas mentionné est qu'il ne reconnaît pas 'llvm-config-3.8 --cxxflags' par exemple le message que je reçois'/bin/bash: llvm-config -3.8: commande non trouvée' mais je n'ai pas mentionné les drapeaux puisque je pensais que le problème principal était la bibliothèque manquante ... – coder

+0

@coder J'ai mis à jour ma réponse. – AlexDenisov

+0

C'est exact, oui. – AlexDenisov