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.
Sie wahrscheinlich benötigen, den Compiler zu sagen, wo die Header-Dateien sind. Schauen Sie in die '-I'-Flagge. – Leandros