3
我有一個函數定義在另一個cpp文件中,我想在LLVM IR中使用。你能告訴我如何使用它們並鏈接它們嗎?LLVM使用外部函數
我做了以下
FunctionType *joinTy = FunctionType::get(voidTy, false);
Function *join = Function::Create(joinTy, Function::ExternalLinkage,"join", &M);
join->setCallingConv(CallingConv::C);
並把它稱爲如下:
Function *join = (&M)->getFunction("join");
CallInst * calljoin = CallInst::Create(join,"",branchInst);
我在外部文件threads.cpp join函數像
void join() {
printf("join\n");
int i;
for (i = 0; i < NUM_THREADS; i++) {
if (threads[i]) {
pthread_join(threads[i], NULL);
}
}
}
我有一個.bc
(LLVM IR)文件,我使用llc
編譯爲.s。我編輯threads.cpp
到threads.o
使用g++ -c threads.cpp
。現在,我想他們作爲
g++ -o exe test.bc threads.o -pthreads
鏈接我得到錯誤:
undefined reference to join
即使我清楚地連接所需的文件。任何幫助?