Function LLVM位代码找不到函数

Function LLVM位代码找不到函数,function,llvm,Function,Llvm,我继续向前,通过llvmgcc-emit llvm-c到llvm位代码编译了一个现有的c代码。c程序由四个模块组成,我通过llvm ld将每个模块构建为一个大位码。然后,我尝试通过llvm ld GE.bc GA.bc SD.bc SH.bc-o prog将这4个位代码文件合并为一个,它可以毫无怨言地工作。 试图执行位代码,但它会抱怨: LLVM错误:程序使用了无法解析的外部函数“myFunction” 问题是myFunction应该在SD.bc中定义,也应该在GA.bc中使用。 但在SD.bc

我继续向前,通过
llvmgcc-emit llvm-c
到llvm位代码编译了一个现有的c代码。c程序由四个模块组成,我通过
llvm ld
将每个模块构建为一个大位码。然后,我尝试通过
llvm ld GE.bc GA.bc SD.bc SH.bc-o prog将这4个位代码文件合并为一个,它可以毫无怨言地工作。
试图执行位代码,但它会抱怨:
LLVM错误:程序使用了无法解析的外部函数“myFunction”

问题是myFunction应该在SD.bc中定义,也应该在GA.bc中使用。 但在SD.bc中找不到-llvm ld是否跳过所有未使用的定义


我的操作系统是Linux,我使用llvm版本2.6。

值得注意的是,llvm在版本2.9和3.0上。您真的应该升级。

它真的是GA.bc中的声明,而SD.bc中有定义吗?
llvm dis
显示了什么?您必须按照依赖关系顺序将位码文件和库提供给
llvm ld
。在文件SD1.bc中有
define void@myFunction(i32%exitCode)命令{
但在SD.bc中没有这样的行!似乎-link as library不足以保留符号。同时指定option-disable opt时,它会保留函数。非常混乱。您可以稍后使用
opt
应用优化。同意。LLVM变化很快-IMHO,方向很好:)。