【发布时间】:2013-06-30 11:47:59
【问题描述】:
除了 GCC 之外,我还想在 Windows 7 上的 MinGW-64bit 环境中使用 clang,两者都使用来自 gcc 的标准库。我正在使用来自http://sourceforge.net/projects/mingwbuilds/ 的 gcc_x64_4.8.1_win32_seh_rev1 和 Qt。
我在这个环境中构建了 clang 3.3,没有任何标志(只是解决了 HAVE_EHTABLE_SUPPORT 编译问题)。
我使用 qmake 构建过程,项目文件还有这些用于 clang 的行(仅发布模式):
QMAKE_CC = clang
QMAKE_CXX = clang++
QMAKE_CXXFLAGS_RELEASE += -Wno-ignored-attributes
QMAKE_CXXFLAGS_RELEASE += -I"C:/tc/gcc_x64_4.8.1_win32_seh_rev1/mingw64/lib/gcc/x86_64-w64-mingw32/4.8.1"
QMAKE_CXXFLAGS_RELEASE += -I"C:/tc/gcc_x64_4.8.1_win32_seh_rev1/mingw64/lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++"
QMAKE_CXXFLAGS_RELEASE += -I"C:/tc/gcc_x64_4.8.1_win32_seh_rev1/mingw64/lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++/x86_64-w64-mingw32"
QMAKE_CXXFLAGS_RELEASE += -I"C:/tc/gcc_x64_4.8.1_win32_seh_rev1/mingw64/x86_64-w64-mingw32/include"
编译到:
C:/tc/gcc_x64_4.8.1_win32_seh_rev1/mingw64/lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++\bits/random.h:106:26: error:
__int128 is not supported on this target
{ typedef unsigned __int128 type; };
^
搜索互联网给出了_mingw.h的引用,但我不知道那里有什么问题:
#if (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 1)) && \
!defined(__SIZEOF_INT128__) /* clang >= 3.1 has __int128 but no size macro */
#define __SIZEOF_INT128__ 16
#endif
【问题讨论】:
-
查看这个线程如何让 clang 在 Windows 上工作:stackoverflow.com/questions/6525245/… 特别是这篇文章:stackoverflow.com/a/6525707/1392778。顺便说一句,在 32 位环境中编译 clang,因为 clang 尚不支持 64 位窗口上的异常处理,这意味着您需要使用 -fno-exceptions 构建所有内容...
-
好吧,我试过了,现在我遇到了同样的问题,但没有包括标准库的路径。所以错误仍然是:__int128 is not supported on this target。关键不是,没有找到 gcc 的标准库,问题是,它似乎不适用于 clang(至少 gcc 版本 4.8.1 和 clang 3.3)。
-
我正在使用与 tdm mingw 4.7.1 捆绑在一起的 clang-3.3,并且构建 bits/random.h 对我来说效果很好。所以你可以考虑改用 4.7.x。
-
rubenvb 的构建在其他时间对我有用 rubenvb SourceForge。最后的构建来自 clang 3.3,下载 GCC 并使用 clang 文件进行更新。