海湾合作委员会非法指导
GCC illegal instruction
当我编译此代码时:
#include <random>
#include <iostream>
int main(int argc, char** argv)
{
std::random_device dev;
std::mt19937 mt(dev());
std::cout << mt() << std::endl;
return 0;
}
,然后尝试使用gdb
运行结果可执行文件,我得到此错误:
程序收到信号
SIGILL
,非法指令。std::(anonymous namespace)::__x86_rdrand ()
at /build/gcc/src/gcc/libstdc -v3/src/c 11/random.cc:69 69 /build/gcc/src/gcc/libstdc -v3/src/c 11/random.cc:否此类文件或目录。
i使用 Arch Linux 与A Intel Core 2 Duo CPU T8100 。我该如何解决?
错误消息是"非法指令",而您获得的唯一提示是__x86_rdrand()
。谷歌搜索RDRAND会导致RDRAND指令,这似乎已为Ivy Bridge处理器添加,您的Core 2 Duo肯定不是。(这是此图表上的penryn:https://en.wikipedia.org/wiki/template:intel_processor_oardmap(
好,所以您的CPU没有RDRAND。这意味着编译器必须具有错误的目标信息。使用GCC,要调整的标志为-march
。就您而言,-march=core2
应该这样做。也应该说 -march=native
可以准确地针对您要编写的内容。
相关文章:
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 编写代码时C++出现错误:错误 1 错误 C2601:'circle':本地函数定义是非法的
- 海湾合作委员会 ARM 性能下降
- 海湾合作委员会手册中提到的"C++ ABI Specification"是什么?
- C++中的移动分配出现问题.非法指令: 4.
- while 循环 c++ 中的非法指令
- 比较 -INT_MIN (海湾合作委员会)
- 使用海湾合作委员会进行消毒,导致意外提前退出
- 使用 ISdigit 通知任何检测到的非法字符
- 为什么海湾合作委员会在实施is_nothrow_constructible时需要static_cast?
- 非法,左操作数具有类型 'DWORD [29]'
- 海湾合作委员会中 -faligned-new 的值
- 如何在进程之间共享大量数据而不重复?(国际刑罚委员会)
- 来自 VS C++ 在 Windows 上的非法指令
- WinLamb 错误:成员初始化非法
- "class":非法使用此类型作为表达式 如何解决?
- AVX512 非法指令
- 在Visual Studio中查找非法内存访问
- 为什么基于范围类型的大括号上循环init列表是非法的c++
- 海湾合作委员会非法指导