У меня есть функция, определенная в другом файле 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 как
void join() {
printf("join\n");
int i;
for (i = 0; i < NUM_THREADS; i++) {
if (threads[i]) {
pthread_join(threads[i], NULL);
}
}
}
И I имеют файл .bc
(LLVM IR), который я компилирую в .s, используя llc
. Я компилирую threads.cpp
в threads.o
используя g++ -c threads.cpp
. Теперь я пытаюсь связать их как
g++ -o exe test.bc threads.o -pthreads
Я получаю сообщение об ошибке:
undefined reference to join
Даже если я четко увязываются требуемый файл. Любая помощь?