从单个现有函数创建LLVMModule

从单个现有函数创建LLVMModule,llvm,Llvm,我正在使用LLVM的c API创建libFoo.a,它应该包含一个简单的(x+42)函数,从我的主程序调用。 我能够创建Foo.o和libFoo.a,但是它最终包含一些我不想成为其中一部分的其他函数,因为它们会导致链接错误(例如,由于多个主函数) 从逻辑上讲,我希望有两种方法可以解决这个问题:要么删除不需要的函数,要么创建一个新的LLVMModule,其中只包含我需要的函数 我通过调用LLVMTargetMachineEmitToFile(target\u machine,ModuleWithT

我正在使用LLVM的c API创建libFoo.a,它应该包含一个简单的(x+42)函数,从我的主程序调用。 我能够创建Foo.o和libFoo.a,但是它最终包含一些我不想成为其中一部分的其他函数,因为它们会导致链接错误(例如,由于多个主函数)

从逻辑上讲,我希望有两种方法可以解决这个问题:要么删除不需要的函数,要么创建一个新的LLVMModule,其中只包含我需要的函数

我通过调用
LLVMTargetMachineEmitToFile(target\u machine,ModuleWithTooManyFunctions,“Foo.o”,LLVMCodeGenFileType::LLVMObjectFile,error\u msg)创建Foo.o)

LLVMValueRef提供了我所需的功能。 我对LLVM很陌生,所以我不知道如何从这里开始。 我的第一个解决方案(创建一个新的LLVMModule,对其调用LLVMAddFunction)遇到了问题,因为我注意到它需要的是TypeRef而不是ValueRef。
因为我通常不太相信我试图解决这个问题,所以我想在这里问一下。

LLVM包含,但AIUI不在C包装器的范围内。所以请澄清,您想创建一个单独的Foo.o,它只包含(x+42)函数,不管该函数名为什么?您可能还希望在
LLVMCodeGenFileType::LLVMObjectFile
上使用
LLVMObjectFile
,因为这是C API公开的内容,但这取决于您自己。