LLVM IR:如何在另一个.ll文件中调用函数

LLVM IR:如何在另一个.ll文件中调用函数,llvm,llvm-clang,llvm-ir,llvm-c++-api,llvm-3.0,Llvm,Llvm Clang,Llvm Ir,Llvm C++ Api,Llvm 3.0,我正在编写LLVM IR代码,我可以调用另一个.ll文件中的函数吗 例如: 在a.ll文件中,有一个函数foo(); 我可以在b.ll中使用这个函数吗,比如只调用foo?如果是的话,我怎样才能包括a.L 谢谢您需要在调用函数foo的ll文件中添加函数foo的声明,然后像往常一样转换link ll文件以生成可执行文件 llvm-link a.ll b.ll -o a.out 范例 a、 ll b、 ll 您需要在调用函数foo的ll文件中添加函数foo的声明,然后像往常一样转换linkll文件

我正在编写LLVM IR代码,我可以调用另一个.ll文件中的函数吗

例如: 在a.ll文件中,有一个函数foo(); 我可以在b.ll中使用这个函数吗,比如只调用foo?如果是的话,我怎样才能包括a.L


谢谢

您需要在调用函数foo的ll文件中添加函数foo的声明,然后像往常一样转换link ll文件以生成可执行文件

 llvm-link a.ll b.ll -o a.out
范例 a、 ll

b、 ll


您需要在调用函数foo的ll文件中添加函数foo的声明,然后像往常一样转换linkll文件以生成可执行文件

 llvm-link a.ll b.ll -o a.out
范例 a、 ll

b、 ll


我尝试了上述过程,但生成的
a.out
文件不是可执行文件。它最初给出一个
权限被拒绝
错误,并在添加适当的权限后显示:

-bash:./a.out:无法执行二进制文件

使用相同的两个llvm文件,即
a.ll
b.ll
对我有效的是:

llvm-link-8 -S a.ll b.ll > hello.ll
llc-8 -filetype=obj hello.ll
clang hello.o

以下3个命令创建一个执行良好的可执行文件。第一个命令创建一个名为
hello.ll
的LLVM位码文件,该文件链接
a.ll
b.ll
。之后,它只是一个从llvm位代码文件创建可执行二进制文件的过程。接下来的两个步骤是什么。(请注意,我正在使用LLVM 8)

我尝试了上述过程,但生成的
a.out
文件不是可执行文件。它最初给出一个
权限被拒绝
错误,并在添加适当的权限后显示:

-bash:./a.out:无法执行二进制文件

使用相同的两个llvm文件,即
a.ll
b.ll
对我有效的是:

llvm-link-8 -S a.ll b.ll > hello.ll
llc-8 -filetype=obj hello.ll
clang hello.o

以下3个命令创建一个执行良好的可执行文件。第一个命令创建一个名为
hello.ll
的LLVM位码文件,该文件链接
a.ll
b.ll
。之后,它只是一个从llvm位代码文件创建可执行二进制文件的过程。接下来的两个步骤是什么。(请注意,我使用的是LLVM 8)

非常感谢。但是如果我在.LL中使用函数(FoE)(在B.LL中使用FoeWar),可以使用C++ API PARSERFILE来提取Foo2()函数,并使它以C++代码运行吗?如果是,怎么做?谢谢,非常感谢。但是如果我在.LL中使用函数(FoE)(在B.LL中使用FoeWar),可以使用C++ API PARSERFILE来提取Foo2()函数,并使它以C++代码运行吗?如果是,怎么做?谢谢