网站首页 > 博客文章 正文
有了 CMake 3.15,在 Windows 上用 GNU 风格的命令行使用 Clang 编译器成为可能。这也意味着可以用Mingw-w64工具链来使用Clang。文末附上下载地址
虽然可以用Mingw-w64(或MinGW)工具链来配置Clang,但如果你决定使用LLVM repo的Clang,它将无法正常工作。这是因为LLVM Clang for Windows是使用Microsoft Visual Studio构建的,所有内置的宏和包含的搜索路径都是为使用Visual Studio而设置的。所以即使与MinGW工具链一起使用,它仍然会尝试包含MSVC标准库头。
我们做了一些实验,发现了一个可能的工作流程,就是使用CLion与MinGW工具链和Clang编译器相结合。
这是我们的发现:
- 从https://www.msys2.org安装MSYS2,请遵循其安装指南。
- 使用pacman工具获取必要的软件包。我们安装了以下文件(pacman -S):mingw-w64-x86_64-gccmingw-w64-x86_64-clangmingw-w64-x86_64-lldmingw-w64-x86_64-dgbmingw-w64-x86_64-makemingw-w64-x86_64-pollymingw-w64-x86_64-compiler-rt
此Clang编译器使用mingw-w64构建,并具有与该工具链相对应的路径和宏。
现在我们准备建立CLion工具链。转到Settings/Preferences | Build, Execution, Deployment | Toolchains:
配置了新的工具链后,就可以开始构建项目了。您可以使用默认的ld连接或设置lld有-DCMAKE_LINKER=lld。
使用Clang编译器提供的高级工具
从理论上讲,所有Clang工具都应该可以正常工作。但是,涉及编译器-rt可能会出现问题。编译器-rt是一组运行时库,在Clang中使用消毒剂和配置文件是必需的,当前的compile_rt软件包是使用MinGW构建的。但是Clang需要使用Clang和lld构建的编译器。
在我们的案例中,我们想使用配置文件引导的优化。进行此工作的一种方法是获取与MSYS2中的Clang版本完全相同的版本的editor-rt源代码。这可能具有挑战性,因此另一个解决方案是克隆LLVM monorepo并构建所需的工具。
对于-fprofile-instr-generate,仅构建compile -rt和llvm-profdata来合并探查器结果可能就足够了。但是,要可靠地使用所有工具,最好也构建Clang和lld。
幸运的是,我们已经具有该构建所需的设置。
最后一步是将<msys2_path>/mingw64/lib\clang/<clang_version>/libwindows中的二进制文件替换为<compiler-rt_path>/cmake-build-release-mingw_clang/libwindows或<llvm_build_path>/lib/clang/<clang_version>/lib/windows中的库。
使用Clang进行性能分析
有了正确的编译器-rt库,现在就可以使用与-fprofile-instr-generate / -fprofile-instr-use标志设置的相同的工具链。因为我们已经有了源代码,所以让我们为此实验构建LLVM。我们还将使用-DLLVM_ENABLE_LTO = Thin进行更多优化。转到Settings/Preferences | Build, Execution, Deployment | CMake:
使用此CMake配置,您可以构建Clang编译器并使用它,例如,构建自己的项目。这将生成相关的探查器信息,稍后应将其与我们之前构建的工具llvm-profdata合并。使用合并的profile_merged.profdata文件,您最终可以构建Clang编译器的优化版本:
使用自定义Clang和lld
要让gcc风格的-fprofile-generate/-fprofile-use标志正确工作,需要改变Clang路径,并将-DCMAKE_LINKER设置为新构建的ld。你还需要一些额外的LLVM技巧:-femulated-tls和链接pthread。
然后,应重复使用-fprofile-instr-generate / -fprofile-instr-use执行的所有步骤。
结论
现在可以在Windows上使用Clang,并且不需要安装Microsoft Visual Studio!
我们希望在不久的将来,使用高级的clang工具将变得更加容易,并且不再需要手动构建。让我们知道,如果您发现其他方法可以达到相同的效果!
今天的内容你学会了吗?前往慧都网免费下 载最新版尝试一下,并在评论分享你的想法。
猜你喜欢
- 2024-10-27 Windows Server 2016 PHP运行环境安装配置
- 2024-10-27 SAP S4HANA 2022安装记录:3. SUSE设置及文件准备
- 2024-10-27 Windows 版本的 B站 开源了?(b站有windows客户端吗)
- 2024-10-27 Maven内网开发与离线仓库导入(离线使用maven仓库)
- 2024-10-27 监控工具之Zabbix,搭建过程和使用心得
- 2024-10-27 Git使用教程:最详细、最傻瓜、最浅显、真正手把手教
- 2024-10-27 向 IT 管理员提供有用的提示:使用 Windows WDS部署各种操作系统
- 2024-10-27 windows下安装php+nginx的运行环境,并把nginx单独注册为服务
- 2024-10-27 通用的windows系统服务注册方案(系统服务注册表)
- 2024-10-27 「苹果小程序」App Clips和微信小程序区别在哪?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)