gcc tidak lagi berfungsi setelah peningkatan

8

Sebagai contoh:

hsmyers@ubuntu:~/c_dev$ cat hello.c
#include <stdio.h>

int main(int argc,char **argv) {
printf("Hello World!\n");
return 0;
}
hsmyers@ubuntu:~/c_dev$ gcc -c -o hello.o hello.c
In file included from /usr/include/stdio.h:28:0,
             from hello.c:1:
/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory
compilation terminated.

Di tebakan di suatu tempat setelah mencoba memperbaiki pesan kesalahan:

/ usr / bin / ld: tidak dapat menemukan crt1.o: Tidak ada file atau direktori seperti itu

Saya sudah mengecilkan segalanya. Adakah yang bisa menyarankan?

hsmyers
sumber
Apakah Anda sudah menginstal libc-dev? Mengkompilasi baik untuk saya.
itnet7

Jawaban:

10

Anda perlu menginstal gcc-multilibpaket yang membawa header spesifik 32bit ke sistem operasi 64bit Anda.

pengguna576557
sumber
0

Ini berfungsi baik untuk saya, pada instalasi oneiric baru. /usr/include/x86_64-linux-gnu/bits/predefs.hdisediakan oleh paket libc6-dev, mungkin itu tidak diinstal dengan benar?

Anda dapat "menginstal ulang" paket itu dengan:

sudo apt-get install --reinstall libc6-dev

Namun, jika file itu ada, maka sepertinya jalur pencarian kompiler Anda tidak mencari di tempat yang tepat untuk file itu. Anda dapat memeriksa dengan menjalankan yang berikut ini:

gcc --verbose -o hello hello.c

yang harus mencetak jalur pencarian untuk menyertakan file. Milik saya mengatakan:

    # include <...> pencarian dimulai di sini:
     /usr/lib/gcc/x86_64-linux-gnu/4.6.1/include
     / usr / local / termasuk
     /usr/lib/gcc/x86_64-linux-gnu/4.6.1/include-fixed
     / usr / include / x86_64-linux-gnu
     / usr / termasuk

Jika itu tidak sama, saya akan mengatakan ada ketidakcocokan versi antara beberapa paket build-essential Anda. Pastikan Anda memiliki versi yang tepat dari paket gcc, dan libc6-dev. Saat ini di Oneiric, ini seharusnya:

gcc           4:4.6.1-2ubuntu5
libc6-dev     2.13-20ubuntu5 
Jeremy Kerr
sumber
hasil dari upaya
--verbose
Bagaimana saya membalas suatu jawaban? Minimal, versi GCC saya 4.7.0 terdaftar sebagai eksperimental. Saya tidak tahu bagaimana itu bisa diinstal. Sejauh yang saya tahu, libc6-dev diinstal. Jalur sertakan saya mirip dengan: /usr/local/lib/gcc/i686-pc-linux-gnu/4.7.0/include (juga / termasuk-diperbaiki) dengan standar / usr / local / termasuk juga. Saya tidak dapat menemukan bit sebagai direktori atau bit / predefs.h di dalamnya. Saya akan mencoba menginstal ulang dan lihat apa yang terjadi.
hsmyers
Instal ulang tidak membuat perbedaan. Bit-bit yang ditemukan di / usr / include / i386-linux-gnu / bits, tidak ditampilkan sebagai bagian dari path termasuk GCC. Versi libc6-dev saya cocok dengan versi Anda.
hsmyers
Saya menyarankan bahwa versi gcc eksperimental (dan non-Ubuntu-standar) adalah masalah Anda. Saya sarankan menghapus itu dan menginstal 4.6.1 dari arsip.
Jeremy Kerr
Cukup banyak apa yang saya pikirkan --- kecuali masalah kecil karena tidak mengetahui a) bagaimana ia sampai di sana dan b) bagaimana menghapusnya. Akankah apt-get remove gcc berfungsi? Atau apakah saya perlu nama paket lengkap? Mungkin i686-pc-linux-gnu-4.7.0?
hsmyers
0

Saya memiliki masalah yang sama dengan kompiler avr-gcc saya.

Saya menautkan file dan folder di / usr / include / i386-linux-gnu / ke folder di mana avr-gcc mencari -file. Sebagai Contoh: / usr / lib / avr / include /

ln -s /usr/include/i386-linux-gnu/* /usr/lib/avr/include/

Mungkin sesuatu yang serupa bekerja untuk gcc. Untuk

Benibr
sumber