How to compile with clang and mingw-w64?(如何用clang和mingw-w64编译?)
问题描述
我正在尝试将clang10与mingw-w64的libstdc++一起使用,因为MSVC头文件不支持clang 10。我不介意没有标准库的新部分,我只想使用新的语言功能。
我安装了用于x86_64的mingw-w64 8.1.0版,并安装了POSIX线程和SEH异常,并使用以下命令运行clang:
clang++ -target x86_64-pc-windows-gnu -std=c++20 ...
一切正常。所有应该在clang 10中实现的语言功能都可以工作,但当我抛出任何异常时,当我运行程序时就会发生这种情况(程序编译正常):
Mingw-w64 runtime failure:
Unknown pseudo relocation protocol version 65536.
我尝试安装带有SJLJ异常的mingw,并在clang中使用-fsjlj-exceptions
标志,但程序甚至无法编译:
C:UsersegstAppDataLocalTemp est-f4a4de.o:test.cpp:(.text+0x82): undefined reference to `__gxx_personality_sj0'
C:UsersegstAppDataLocalTemp est-f4a4de.o:test.cpp:(.text+0xd9): undefined reference to `_Unwind_SjLj_Register'
C:UsersegstAppDataLocalTemp est-f4a4de.o:test.cpp:(.text+0x177): undefined reference to `_Unwind_SjLj_Resume'
clang++ --version
表示Target: x86_64-pc-windows-msvc
。也许有一个版本的x86_64-pc-windows-gnu
我应该用来代替?此时此刻有没有办法让这件事起作用,或者我应该等待MSVC的支持?除了MSVC和MinGW之外,还有其他选择吗?
推荐答案
根据@HolyBlackCat的建议,我在MSYS2上尝试了一下,它工作得很好。我只需简单地安装MSYS2,然后从我安装的this包中安装MSYS2。它将所有内容安装在...msys2mingw64
中。你会得到clang 10(+GCC 9.3)和所有需要的stl标头(但仍然没有像<concepts>
这样的c++20标头)。
这篇关于如何用clang和mingw-w64编译?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何用clang和mingw-w64编译?


基础教程推荐
- 设计字符串本地化的最佳方法 2022-01-01
- C++ 标准:取消引用 NULL 指针以获取引用? 2021-01-01
- 什么是T&&(双与号)在 C++11 中是什么意思? 2022-11-04
- 运算符重载的基本规则和习语是什么? 2022-10-31
- 如何在 C++ 中处理或避免堆栈溢出 2022-01-01
- C++,'if' 表达式中的变量声明 2021-01-01
- 调用std::Package_TASK::Get_Future()时可能出现争用情况 2022-12-17
- 如何定义双括号/双迭代器运算符,类似于向量的向量? 2022-01-01
- C++ 程序在执行 std::string 分配时总是崩溃 2022-01-01
- 您如何将 CreateThread 用于属于类成员的函数? 2021-01-01