gcc7 ไม่สามารถคอมไพล์ประเภท float หลังจากที่ฉันเปลี่ยนฮาร์ดแวร์ของ ubuntu 18.04 (รวมถึง cpu และมาเธอร์บอร์ด) แม้ว่าฉันจะติดตั้ง gcc7 และแพ็คเกจ build-essential ฯลฯ อีกครั้ง cross build เช่น arm-linux-gnueabihf-gcc ก็ล้มเหลวเช่นกัน แต่เสียงกริ่งก็ทำงานได้ดีในเวลานั้น
รายละเอียดเพิ่มเติม:
แมว ac
int main()
{
float a=10000.0;
return a/111;
}
gcc -c ac
a.c: In function ‘main’:
a.c:29:5: internal compiler error: Illegal instruction
float a=10000.0;
^~~~~
ฉันพยายามแก้ไขข้อบกพร่อง:
>gcc -O0 -c a.c -wrapper gdb,--args
GNU gdb (Ubuntu 8.1.1-0ubuntu1) 8.1.1
...
Reading symbols from /usr/lib/gcc/x86_64-linux-gnu/7/cc1...(no debugging symbols found)...done.
(gdb) r
Starting program: /usr/lib/gcc/x86_64-linux-gnu/7/cc1 -quiet -imultiarch x86_64-linux-gnu a.c -quiet -dumpbase a.c -mtune=generic -march=x86-64 -auxbase a -O0 -fstack-protector-strong -Wformat -Wformat-security -o /tmp/ccWQLBBi.s
Program received signal SIGILL, Illegal instruction.
0x00007ffff736cd42 in __gmpn_mul_basecase () from /usr/local/lib/libgmp.so.10
(gdb) bt
#0 0x00007ffff736cd42 in __gmpn_mul_basecase () from /usr/local/lib/libgmp.so.10
#1 0xffffffffffffff01 in ?? ()
#2 0x00007fffffffcc70 in ?? ()
#3 0x00007fffffffcc60 in ?? ()
#4 0x0000000000000004 in ?? ()
#5 0x00007ffff736c7a6 in __gmpn_mul_n () from /usr/local/lib/libgmp.so.10
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
ดูเหมือนว่าจะล้มเหลวด้วย libgmp.so.10 ดังนั้นฉันจึงติดตั้งแพ็คเกจ libgmp10 ใหม่ แต่ก็ยังล้มเหลวด้วยปัญหาเดียวกัน