c++ - 如何从命令行使用 Visual Studio 2017 Codegen ClangC2?

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

我正在尝试使用 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 分别调用编译器而不是链接器(即它不依赖编译器调用链接器,而是调用链接器。直接执行)

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

最佳答案

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

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

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"

上述解决方案是 hackish,可能需要管理员权限,并假设交联器与本地交联器兼容。

关于c++ - 如何从命令行使用 Visual Studio 2017 Codegen ClangC2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43051353/

相关文章:

c++ - 如何从 C++ 修改 QML 文本

C++ 当模板参数相同时优化类模板函数

c++ - 仅接受来自特定 IP 的套接字

c++ - 有选择地禁用库中的死代码消除

git - 更新后在 Visual Studio 2017 中使用 GIT 时出现错误

c++ - QT "relocation error"/"no version information available"运行时错误

ios - 在 iOS : symbol(s) not found collect2: ld 中导入 zlib 时出错

c++ - 错误 : C++ unresolved external symbol

visual-studio - 找不到 "GetReferenceNearestTargetFrameworkTask"任务

.NET编译平台: Not Working