Hello all, I'm trying to bring an LLVM-based project that is working on Linux up on Win32. I am having problems with llvm::ExecutionEngine::create returning a NULL. I traced it to these lines: // Unless the interpreter was explicitly selected, try making a JIT. if (!ForceInterpreter && JITCtor) EE = JITCtor(MP, ErrorStr); // If we can't make a JIT, make an interpreter instead. if (EE == 0 && InterpCtor) EE = InterpCtor(MP, ErrorStr); JITCtor and InterpCtor are both NULL, so it's obvious why I'm getting back a NULL execution engine. I am pretty sure it's because I'm missing a few llvm .lib or .obj files. What is the set of llvm object files needed at link time for Win32 on X86 JIT? Thanks very much for any help, Aaron
You'll need to link in x86.lib as generated from the VStudio project. I had trouble convincing VStudio's linker to keep the relevant code around, so did this in the app I work on: void LLVMCompiledProgram::linkerTrick() { llvm::Module staticModule("staticModule"); std::string staticString; llvm::X86_32TargetMachine staticMachine(staticModule, staticString); } Which I called from somewhere real. Chuck. -----Original Message----- From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On Behalf Of Aaron Dwyer Sent: Wednesday, February 20, 2008 5:24 PM To: llvmdev at cs.uiuc.edu Subject: [LLVMdev] LLVM Win32 Issue Hello all, I'm trying to bring an LLVM-based project that is working on Linux up on Win32. I am having problems with llvm::ExecutionEngine::create returning a NULL. I traced it to these lines: // Unless the interpreter was explicitly selected, try making a JIT. if (!ForceInterpreter && JITCtor) EE = JITCtor(MP, ErrorStr); // If we can't make a JIT, make an interpreter instead. if (EE == 0 && InterpCtor) EE = InterpCtor(MP, ErrorStr); JITCtor and InterpCtor are both NULL, so it's obvious why I'm getting back a NULL execution engine. I am pretty sure it's because I'm missing a few llvm .lib or .obj files. What is the set of llvm object files needed at link time for Win32 on X86 JIT? Thanks very much for any help, Aaron _______________________________________________ LLVM Developers mailing list LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
"Aaron Dwyer" <llvmification at gmail.com> writes: [snip]> JITCtor and InterpCtor are both NULL, so it's obvious why I'm getting > back a NULL execution engine. I am pretty sure it's because I'm > missing a few llvm .lib or .obj files. What is the set of llvm object > files needed at link time for Win32 on X86 JIT?This is what I use on MinGW. It is for 2.1. I hope 2.2 is similar: LIBFILES = $(LLVM_LIB_PATH)LLVMX86.o \ $(LLVM_LIB_PATH)LLVMExecutionEngine.o \ $(LLVM_LIB_PATH)LLVMJIT.o \ -lLLVMAsmParser \ -lLLVMSelectionDAG \ -lLLVMCodeGen \ -lLLVMScalarOpts \ -lLLVMTransformUtils \ -lLLVMAnalysis \ -lLLVMTarget \ -lLLVMCore \ -lLLVMSupport \ -lLLVMSystem \ -lpsapi \ -ldbghelp If you are on VS, .o is .obj and -lLLVMWhatever is Whatever.lib. If you still have problems, examine the commands that are executed for building some example (examples/Fibonacci/fibonacci.cpp for instance). HTH -- Oscar
You can use llvm-config --libs. It will tell you how to link llvm libraries into your app. Evan On Feb 20, 2008, at 6:14 PM, Óscar Fuentes wrote:> "Aaron Dwyer" <llvmification at gmail.com> writes: > > [snip] > >> JITCtor and InterpCtor are both NULL, so it's obvious why I'm getting >> back a NULL execution engine. I am pretty sure it's because I'm >> missing a few llvm .lib or .obj files. What is the set of llvm >> object >> files needed at link time for Win32 on X86 JIT? > > This is what I use on MinGW. It is for 2.1. I hope 2.2 is similar: > > > LIBFILES = $(LLVM_LIB_PATH)LLVMX86.o \ > $(LLVM_LIB_PATH)LLVMExecutionEngine.o \ > $(LLVM_LIB_PATH)LLVMJIT.o \ > -lLLVMAsmParser \ > -lLLVMSelectionDAG \ > -lLLVMCodeGen \ > -lLLVMScalarOpts \ > -lLLVMTransformUtils \ > -lLLVMAnalysis \ > -lLLVMTarget \ > -lLLVMCore \ > -lLLVMSupport \ > -lLLVMSystem \ > -lpsapi \ > -ldbghelp > > If you are on VS, .o is .obj and -lLLVMWhatever is Whatever.lib. > > If you still have problems, examine the commands that are executed for > building some example (examples/Fibonacci/fibonacci.cpp for instance). > > HTH > > -- > Oscar > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev