gpt4 book ai didi

linux - 在 Windows 10 上运行 LLVM passes 在终端中没有输出?

转载 作者:太空宇宙 更新时间:2023-11-04 12:35:37 26 4
gpt4 key购买 nike

我有来自 LLVM.org 的示例密码:

#include "llvm/Pass.h"
#include "llvm/IR/Function.h"
#include "llvm/Support/raw_ostream.h"

using namespace llvm;

namespace {
struct Hello : public FunctionPass {
static char ID;
Hello() : FunctionPass(ID) {}

bool runOnFunction(Function &F) override {
errs() << "Hello: ";
errs().write_escaped(F.getName()) << '\n';
return false;
}
}; // end of struct Hello
} // end of anonymous namespace

char Hello::ID = 0;
static RegisterPass<Hello> X("hello", "Hello World Pass",
false /* Only looks at CFG */,
false /* Analysis Pass */);

项目构建良好并创建了一个 SkeletonPass.dll。

当我执行命令时:

C:\Users\nlykkei\Projects\llvm-pass-tutorial\build>opt -load skeleton\Debug\SkeletonPass.dll -hello foo.bc
opt: Unknown command line argument '-hello'. Try: 'opt -help'
opt: Did you mean '-help'?

opt 无法识别 -hello 选项,即使这样在 Ubuntu 16.04 上一切正常。

此外,如果我执行:

clang -Xclang -load -Xclang skeleton\Debug\SkeletonPass.dll foo.bc

Visual Studio 终端( native 工具命令提示符 x86)上未打印任何内容。在 Linux 上,对于相同的位码文件,函数名称打印得很好。

我的经历可能是什么原因?我在 Windows 10 上的操作与在 Ubuntu 上的操作完全相同,但结果却截然不同。

最佳答案

插件是 Windows 上的特殊野兽,因为后者不支持正确的动态链接,因此,您的通行证根本不会在 PassRegistry 中注册。因此,您要么需要将所有 LLVM 编译成 .dll,要么将您的 pass 静态链接到 opt/clang。

关于linux - 在 Windows 10 上运行 LLVM passes 在终端中没有输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41943353/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com