繁体   English   中英

在输出endl时clang段错误

[英]Clang segfaults when outputting endl

我正在尝试使用Clang(版本3.4,通过Windows预构建的二进制文件)来查看它是否适合替代GCC(版本4.8.1,使用MinGW); 但是,我无法得到一个简单的程序。

#include <iostream>

int main()
{
    std::cout << std::endl;
}

Clang能够编译和链接程序,但运行它会产生SIGSEGV信号和返回码0xC0000005 输出字符串工作正常,但std::flush导致相同的结果,但允许流自动刷新自己是可以的。

调试程序只显示一个包含__mingw_CRTStartup()的调用堆栈(Clang使用的是libstdc ++,因为它没有安装libc ++)和std::cout () 可能导致这种情况的原因,以及如何解决?

编辑:使用其他ostream操纵符(如std::decstd::unitbuf时会发生同样的事情。

LLVM 3.4有一个关于类似问题的漏洞。 问题似乎是LLVM 3.4和MinGW 4.7+之间的ABI不兼容,导致i686指令被拾取而不是所选目标。

x64 Windows上可能的解决方案是使用MinGW64构建 这应该工作,但正确的标准库头可能是棘手的。

建议的解决方案是按照此处的步骤 ,调整目标和系统上的任何路径并进行编译。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM