我坚持要编译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;
我看不到错误可能在哪里。是我需要将一些标志传递给编译器吗?
答案 0 :(得分:0)
您的GCC编译器二进制文件显然是针对错误的子体系结构进行编译的,因此浮点计算会导致SIGILL
陷阱。例如,在x86上,如果在非AVX2机器上运行针对支持AVX2的CPU编译的编译器,则会发生这种情况。