【问题标题】:How to use Visual Studio 2017 Codegen ClangC2 from command line?如何从命令行使用 Visual Studio 2017 Codegen ClangC2?
【发布时间】:2017-03-27 16:08:13
【问题描述】:

我正在尝试使用 Visual Studio 2017 构建工具(在 x64 系统上)中的 Clang/C2 编译器构建一个简单的“空主”应用程序。我已经按照建议启动了...\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars64.bat shell,但意识到它没有添加到 clang.exe 编译器的路径,所以clang 不可用。手动添加路径(x64 托管版本),因此也可以调用 clang

尝试使用简单的空主函数体构建最简单的程序会导致以下错误:

clang hello.cc -o hello.exe
error: failed to load c2 (file not found)

c2.dll 是 clang 应该为链接而拉入的 MS 链接器,但它似乎找不到它。

我尝试从 IDE 本身构建相同的程序,它显然是成功的,因为 IDE 分别调用编译器和链接器(即它不依赖编译器来调用链接器,而是调用 link. exe直接)

有人知道如何让 clang/c2 编译器工作正常吗?(以前我可以用 Visual Studio 2015 做同样的事情)

【问题讨论】:

    标签: c++ linker visual-studio-2017 build-tools


    【解决方案1】:

    问题是 Clang 太笨了,无法在 Windows 中找到 link.exe,尽管它位于 PATH 中。

    解决方案是使用MKLINK 命令在clang.exe 可执行文件旁边创建指向link.exe 的符号链接:

    cd "c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\ClangC2\14.10.25903\bin\HostX64"
    mklink link.exe "c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.10.25017\bin\HostX64\x64\link.exe"
    
    cd "c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\ClangC2\14.10.25903\bin\HostX86"
    mklink link.exe "c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.10.25017\bin\HostX86\x86\link.exe"
    

    上述解决方案是骇人听闻的,可能需要管理员权限,并假设交联剂与本地交联剂兼容。

    【讨论】:

    • 确实clang/c2不使用路径来定位Link.exe,这很奇怪。我也使用过程监视器跟踪了这一点。也可以将 link.exe 复制到当前目录中,但这更加骇人听闻。感谢您的提示。
    猜你喜欢
    • 1970-01-01
    • 2019-03-29
    • 2018-06-18
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多