内部编译器错误:尝试编译sqlite3.c时gcc中的指令非法

时间:2019-02-28 22:05:58

标签: gcc sqlite

我坚持要编译OMNet ++,并且在编译sqlite3.c时会显示以下错误:

sqlite3.c: In function ‘computeJD’:
sqlite3.c:18784:3: internal compiler error: Illegal instruction
   p->iJD = (sqlite3_int64)((X1 + X2 + D + B - 1524.5 ) * 86400000);
   ^

该行上的sqlite3.c的源代码显示:

  X1 = 36525*(Y+4716)/100;
  X2 = 306001*(M+1)/10000;
  p->iJD = (sqlite3_int64)((X1 + X2 + D + B - 1524.5 ) * 86400000);
  p->validJD = 1;

我看不到错误可能在哪里。是我需要将一些标志传递给编译器吗?

1 个答案:

答案 0 :(得分:0)

您的GCC编译器二进制文件显然是针对错误的子体系结构进行编译的,因此浮点计算会导致SIGILL陷阱。例如,在x86上,如果在非AVX2机器上运行针对支持AVX2的CPU编译的编译器,则会发生这种情况。