Ich versuche, OSX mit llvm 3.8 zu erstellen und anzuwenden. Ich installierte llvm 3.8 mit dieser Formel mit brauen: $brew install llvm38
Innerhalb des Pass ich folgendes haben:Erstellen und Verwenden eines Durchgangs für LLVM 3.8 unter OSX
static RegisterPass<SwiftPass> X("pass", "My Pass");
Mein Makefile den Pass zu bauen wie folgt aussieht:
LIB_NAME = pass$(SUFIX)
LDFLAGS = $(shell $(LLVM_PATH)llvm-config --ldflags)
CXXFLAGS = -g -Wall -fno-rtti -fPIC -std=c++11 -shared -dynamiclib $(shell $(LLVM_PATH)llvm-config --cxxflags --system-libs --libs core executionengine interpreter mc support nativecodegen)
COMPILER = clang++
all: $(LIB_NAME)
$(LIB_NAME): $(OBJ)
$(COMPILER) $(CXXFLAGS) $(LDFLAGS) $^ -o [email protected]
Wenn gibt mir ein paar clang: warning: -l[some lib]: 'linker' input unused
. Es gibt auch mir:
clang: warning: argument unused during compilation: '-shared'
clang: warning: argument unused during compilation: '-dynamiclib'
Aber es gibt ein .dylib und .o so gehe ich vor, es auszuprobieren. So, jetzt , dass ich einen Pass habe ich kann es auf meine .bc Datei anwenden und dafür verwende ich ein Makefile so (ich die Definitionen der Kürze omited):
$(LLVM_OPT) -load $(PASSFILE) $(PASSNAME) $(NAME).bc -o $(NAME).afterMyPass.bc
Dies führt zu:
opt -load pass.dylib -pass int.bc -o int.afterMyPass.bc
und gibt diese zu mir:
opt: Unknown command line argument '-pass'. Try: '/usr/local/Cellar/llvm38/3.8.0/lib/llvm-3.8/bin/opt -help'
opt: Did you mean '-slsr'?
make: *** [pass] Error 1
Meine Vermutung ist, dass dies durch die nicht verwendeten Argumente während der Kompilierung verursacht wird, aber ich weiß nicht, warum sie in erster Linie nicht verwendet werden da sie eine gemeinsame Bibliothek erstellen müssen.
Was mache ich falsch und wie kann ich das beheben?
Was gibt opt -load pass.dylib -help? – khrm
$ opt-load pass.dylib -help ÜBERBLICK: llvm .bc -> .bc modulare Optimierer und Analyse Drucker ANWENDUNG: opt [Optionen] OPTIONEN: ... –
Ich möchte wissen, ob es -pass 'zeigt in Hilfe? – khrm