通过命令opt-in llvm使用共享对象(.so)

通过命令opt-in llvm使用共享对象(.so),llvm,Llvm,我是llvm初学者。我运行命令: ../llvm-6.0.0.src/build/bin/opt -load=./test.so -Hello < main.bc 。/llvm-6.0.0.src/build/bin/opt-load=/test.so-Hello

我是llvm初学者。我运行命令:

../llvm-6.0.0.src/build/bin/opt -load=./test.so -Hello < main.bc
。/llvm-6.0.0.src/build/bin/opt-load=/test.so-Hello
根据教程,但出现错误:

opt: CommandLine Error: Option 'use-dbg-addr' registered more than once! LLVM ERROR: inconsistency in registered CommandLine options opt:CommandLine错误:选项“use dbg addr”已注册多次! LLVM错误:注册的命令行选项不一致
我一次又一次地在谷歌上搜索,对这个错误一无所获。

您需要一个启用共享库的LLVM构建,它对应于
cmake
选项
build\u shared\u LIBS=On
。您可以通过检查其
lib
目录或执行以下操作来检查已安装的LLVM的类型:

llvm-config --shared-mode

这应该报告共享的
;任何其他内容都需要您重新编译。

谢谢您的帮助!在运行“llvm配置--共享模式”之后,我得到了“静态”,所以我必须再次编译llvm?是的,恐怕是这样。也许线程可以帮上忙。嗯,我按照您的建议重新编译llvm,现在“llvm配置-共享模式”显示为“共享”,但现在遇到另一个问题:“opt:CommandLine Error:Option'o'注册了不止一次!”。那么这个错误出了什么问题?您确定您的
$PATH
中有正确的
opt
哪个选项
会说什么?除非你也在你的插件中定义了一个
-o
选项?这已经被
opt
本身所采用