Компиляция программ, использующих LLVM на Windows

20 Фев
2012

Вечер добрый, хотелось бы узнать, каким образом скомпилировать свою программу использующую модули LLVM на Windows. Имеется компилятор написанный на GCC в Linux который использует front-end LLVM, все работает хорошо. Захотелось перевести компилятор на Windows. Установил себе MinGW, собрал из исходников LLVM через CMake, проверил, вроде работает нормально (попробовал скомпилировать тестовый файл в CLANG), но почему-то не собрался llvm-config, ладно думаю я, сделаю свою программу для запуска, выглядит следующим образом:
// Main
#include #include #include #include #include #include #include #include int main() {
system("g++ Main.cpp -o Jobell -ldl -lrt -lffi -I C:/LLVM/llvm-3.0/include -DNDEBUG -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -g -O2 -fomit-frame-pointer -fno-exceptions -fPIC -Woverloaded-virtual -Wcast-qual -L C:/LLVM/llvm-3.0/build/lib -lpthread -lm -lLLVMMCDisassembler -lLLVMXCoreCodeGen -lLLVMXCoreInfo -lLLVMSystemZCodeGen -lLLVMSystemZInfo -lLLVMSparcCodeGen -lLLVMSparcInfo -lLLVMPowerPCCodeGen -lLLVMPowerPCAsmPrinter -lLLVMPowerPCInfo -lLLVMMipsAsmPrinter -lLLVMMipsCodeGen -lLLVMMipsInfo -lLLVMMSP430CodeGen -lLLVMMSP430AsmPrinter -lLLVMMSP430Info -lLLVMMBlazeAsmPrinter -lLLVMMBlazeCodeGen -lLLVMMBlazeInfo -lLLVMLinker -lLLVMipo -lLLVMInterpreter -lLLVMInstrumentation -lLLVMJIT -lLLVMExecutionEngine -lLLVMCppBackend -lLLVMCppBackendInfo -lLLVMCellSPUCodeGen -lLLVMCellSPUInfo -lLLVMCBackend -lLLVMCBackendInfo -lLLVMBlackfinCodeGen -lLLVMBlackfinInfo -lLLVMBitWriter -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86AsmPrinter -lLLVMX86Info -lLLVMAsmParser -lLLVMARMDisassembler -lLLVMARMAsmParser -lLLVMARMCodeGen -lLLVMARMAsmPrinter -lLLVMARMInfo -lLLVMArchive -lLLVMBitReader -lLLVMAlphaCodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMMCParser -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMTransformUtils -lLLVMipa -lLLVMAnalysis -lLLVMTarget -lLLVMMC -lLLVMCore -lLLVMAlphaInfo -lLLVMSupport -L C:/LLVM/llvm-3.0/build/lib");
return 0;
}



Но линковщик не находит ключи: -ldl -lrt -lffi. Попробовал убрать эти ключи, теперь выходят такие вот ошибки:
Main.cpp:1:0: warning: -fPIC ignored for target (all code is position independen
t) [enabled by default]
C:/LLVM/llvm-3.0/build/lib/libLLVMSupport.a(DynamicLibrary.cpp.obj):DynamicLibrary.cpp:(.text+0x2ae): undefined reference to `_imp__EnumerateLoadedModules@12'
C:/LLVM/llvm-3.0/build/lib/libLLVMSupport.a(Signals.cpp.obj):Signals.cpp:(.text+0x581): undefined reference to `_imp__SymSetOptions@4'
C:/LLVM/llvm-3.0/build/lib/libLLVMSupport.a(Signals.cpp.obj):Signals.cpp:(.text+0x5a1): undefined reference to `_imp__SymInitialize@12'
C:/LLVM/llvm-3.0/build/lib/libLLVMSupport.a(Process.cpp.obj):Process.cpp:(.text+0xc2): undefined reference to `GetProcessMemoryInfo@12'
collect2: ld returned 1 exit status


Вот собственно и вопрос, как мне заставить MinGW скомпилировать мою программу?
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх