2014-01-15 31 views
2

我看到的所有示例顯示llvm::InitializeNativeTarget()在第一行被調用。llvm InitializeNativeTarget()未定義

我剛剛完成了構建llvm和clang,並試圖讓我的第一個示例運行,並且此函數似乎未定義。我不確定它是否實際上未定義,並且這些示例已過時,或者如果我在上一步中做了錯誤的操作。

如果它應該存在,我會在哪裏找到這個函數的定義?還有什麼我應該調用呢?

InitializeNativeTarget(); /* error, undefined */ 
llvm_start_multithreaded(); 
LLVMContext context; 
string error; 
llvm::OwningPtr<MemoryBuffer> buffer; 

auto result = MemoryBuffer::getFile("test.bc", buffer); 
auto m = ParseBitcodeFile(buffer.get(), context, &error); 
auto ee = ExecutionEngine::create(m, true, &error); 

通過上面的代碼,並通過鐺我得到一個空ExecutionEngine所以我假設我沒有正確初始化的東西整理了test.bc文件。

回答

5

令人驚訝的很難找到,但該功能似乎已更名爲:

LLVMInitializeNativeTarget() 

只需調用該函數解決我的問題。

(還我需要調用ExecutionEngine ::創建(男,,&錯誤),而不是true

4

這僅僅是一個澄清。事實上,功能llvm::InitializeNativeTarget可以

的#include找到 「LLVM /支持/ TargetSelect.h」

你調用的函數llvm::LLVMInitializeNativeTarget

的#include存在「LLVM-C/Target.h「

後面的頭文件已包含在ExecutionEngine.h之內。因此你找到了它。除了它們的返回值外,這兩個函數似乎都是相同的(至少在v3.9.1之前)。然而,前者是在LLVM示例中使用的,我建議堅持使用它,特別是如果您使用C++。