我想从llvm的可加载模块调用yices。我编译了-lyices。虽然编译不报告任何错误,但在运行时llvm模块无法找到yices符号。
答案 0 :(得分:0)
当您说“从LLVM的可加载模块调用”时,您的意思是使用ExecutionEngine::getPointerToFunction
吗?
请注意,此调用相当于当前进程的dlsym
,因此它只会找到实际编译到可执行文件中的符号。您可以检查(例如readelf
)是否确实如此。如果您没有在任何地方使用该库(但只是尝试在JIT中加载它),则很可能该符号已删除了引用。因此,您必须创建虚拟引用或使用链接描述文件/选项来强制链接库的所有符号,即使在编译时没有看到任何符号来访问它们。