2016-04-12 9 views
1

Ich habe ein Projekt (das funktioniert), das ich versuche, auf meinem Mac zu kompilieren. Es verwendet eine Vielzahl von Dingen einschließlich LLVM, die die einzige war, die ich nicht installiert hatte. Also folgte ich den Anweisungen hier: http://www.isi.edu/~pedro/Teaching/CSCI565-Spring15/Projects/Project1-LLVM/LLVMInstructions-MacOSX10.9.pdfInstallieren und Kompilieren mit LLVM unter Mac OS X

Dies schien zu funktionieren, aber mein Makefile erforderlich, ich installiere LLVM 3.3, während das Tutorial für LLVM 3.5 ist. Nun, sowohl vor als auch nach der Installation, wenn ich laufe mache ich die folgende Fehlermeldung erhalten:

$ make 
compiling cpp yacc file: expr-codegen.y 
output file: expr-codegen 
bison -b expr-codegen -d expr-codegen.y 
/bin/mv -f expr-codegen.tab.c expr-codegen.tab.cc 
flex -oexpr-codegen.lex.cc expr-codegen.lex 
clang -g -c decaf-stdlib.c 
clang++ -o ./expr-codegen expr-codegen.tab.cc expr-codegen.lex.cc decaf-stdlib.o `llvm-config-3.3 --cppflags --ldflags --libs core jit native` -ly -ll 
/bin/sh: llvm-config-3.3: command not found 
In file included from expr-codegen.y:6: 
./decafdefs.h:5:10: fatal error: 'llvm/IR/DerivedTypes.h' file not found 
#include "llvm/IR/DerivedTypes.h" 
     ^
1 error generated. 
In file included from expr-codegen.lex:2: 
./decafdefs.h:5:10: fatal error: 'llvm/IR/DerivedTypes.h' file not found 
#include "llvm/IR/DerivedTypes.h" 
     ^
1 error generated. 
make: *** [expr-codegen] Error 1 

Hier meine Make-Datei ist:

lexlib=l 
yacclib=y 
bindir=. 
rm=/bin/rm -f 
mv=/bin/mv -f 
targets= 
#cpptargets=type-inherit decaf-sym 
#llvmtargets=factorial 
#llvmcpp=sexpr2-codegen expr-codegen 
#llvmfiles=rec_add 
#llvmcpp=decaf-sym expr-codegen sexpr2-codegen 
llvmcpp=expr-codegen 

all: $(targets) $(cpptargets) $(llvmfiles) $(llvmcpp) 

$(targets): %: %.y 
    @echo "compiling yacc file:" $< 
    @echo "output file:" [email protected] 
    bison [email protected] -d $< 
    flex [email protected] [email protected] 
    clang -o $(bindir)/[email protected] [email protected] [email protected] -l$(yacclib) -l$(lexlib) 
    $(rm) [email protected] [email protected] [email protected] 

$(cpptargets): %: %.y 
    @echo "compiling cpp yacc file:" $< 
    @echo "output file:" [email protected] 
    bison -b [email protected] -d $< 
    $(mv) [email protected] [email protected] 
    flex [email protected] [email protected] 
    clang++ -o $(bindir)/[email protected] [email protected] [email protected]c -l$(yacclib) -l$(lexlib) 
    $(rm) [email protected] [email protected] [email protected] 

$(llvmcpp): %: %.y 
    @echo "compiling cpp yacc file:" $< 
    @echo "output file:" [email protected] 
    bison -b [email protected] -d $< 
    $(mv) [email protected] [email protected] 
    flex [email protected] [email protected] 
    clang -g -c decaf-stdlib.c 
    clang++ -o $(bindir)/[email protected] [email protected] [email protected] decaf-stdlib.o `llvm-config-3.3 --cppflags --ldflags --libs core jit native` -l$(yacclib) -l$(lexlib) 
    $(rm) [email protected] [email protected] [email protected] 

$(llvmtargets): %: %.ll 
    @echo "using llvm to compile file:" $< 
    llvm-as $< 
    `llvm-config-3.3 --bindir`/llc -disable-cfi [email protected] 
    clang [email protected] ../decaf-stdlib.c -o $(bindir)/[email protected] 

$(llvmfiles): %: %.ll 
    @echo "using llvm to compile file:" $< 
    llvm-as $< 
    `llvm-config-3.3 --bindir`/llc -disable-cfi [email protected] 
    clang [email protected] decaf-stdlib.c -o $(bindir)/[email protected] 

clean: 
    $(rm) $(targets) $(cpptargets) $(llvmtargets) $(llvmcpp) $(llvmfiles) 
    $(rm) *.tab.h *.tab.c *.lex.c 
    $(rm) *.bc *.s *.o 
    $(rm) -r *.dSYM 

Als blutiger Anfänger auf LLVM habe ich keine Ahnung, warum ich kann‘ t den Compiler LLVM zu erkennen und zu verwenden. Jede Hilfe wäre willkommen. Vielen Dank.

+0

Sie wahrscheinlich benötigen, den Compiler zu sagen, wo die Header-Dateien sind. Schauen Sie in die '-I'-Flagge. – Leandros

Antwort

1

Vom llvm-config-Dokumentation:

dzur:~/tmp> llvm-config 
usage: llvm-config <OPTION>... [<COMPONENT>...] 

Get various configuration information needed to compile programs which use 
LLVM. Typically called from 'configure' scripts. Examples: 
    llvm-config --cxxflags 
    llvm-config --ldflags 
    llvm-config --libs engine bcreader scalaropts 

was ziemlich viel ist, was Sie brauchen :)