błąd krytyczny: sys / cdefs.h: Brak takiego pliku lub katalogu |

108

Minęły tygodnie, kiedy próbuję używać Code :: Blocks IDE na Ubuntu 14.04 LTS do programowania Atmega16, jednak przeszkadza mi następujący błąd podczas kompilacji / kompilacji programu w C :: B

/usr/include/features.h|374|fatal error: sys/cdefs.h: No such file or directory|

Przeczytałem ten wątek i na tej podstawie próbowałem oczyścić libc6-devi napotkałem problemy, usuwając zależności. Z poprzednich doświadczeń wiedziałem, że istnieje duże prawdopodobieństwo, że popełnisz błąd zepsutej rury. Rozwiązałem to, instalując utracone zależności.

Teraz nadal mam ten sam błąd.

Mandar
źródło
1
Możliwy duplikat Jak znaleźć pakiet, który zawiera plik?
David Foerster,

Odpowiedzi:

154

Jeśli korzystasz z instalacji amd64, możesz spróbować zainstalować pakiet libc6-dev-i386. Pomogło mi to rozwiązać ten sam problem, który napotkałeś podczas próby skompilowania smm z i8kutils.

zerwas
źródło
9
To działało jak urok. To powinna być zaakceptowana odpowiedź.
Patryk
14
Lepiej zainstalować gcc-multilib i g ++ - multilib.
RobotHumans
Zainstalowanie libc6 i libc6-dev rozwiązało to dla mnie. Znalazłem też jakieś referencje, ale niestety zgubiłem to.
Mandar,
4
libc6-dev-i386 to jeden z dodatkowych pakietów, które zostaną zainstalowane, jeśli uruchomię sudo apt-get install g++-multilibw Kali 2016.2.
林果 皞
3
Jeśli masz wiele łańcuchów narzędzi kompilatora, wygląda to na błąd w pakowaniu. Multilib jeden daje ci 32 i 64-bitowe konstruktory, ale prawdopodobnie mówi coś głupiego, jak najpierw usuń wszystkie inne łańcuchy narzędzi, aby spróbować uniknąć konfliktów. Pracował dla mnie, ale nie miałem kompilatorów do uzbrojenia. Używam do tego maszyn wirtualnych.
RobotHumans
46

Na moim komputerze, gdzie prawdopodobnie zbyt wiele zepsułem z plikami architektury 32- i 64-bitowej, rozwiązałem ten problem, instalując g++-multilib.

Ted Hahn
źródło
2

Wiem, że jest to gałąź skoncentrowana na Ubuntu, ale ta strona jest pierwszą, która pojawiła się, gdy przeszukałem ten błąd w Google (nawet gdy wstawiłem -Ubuntu w wyszukiwaniu), więc podzielę się swoją odpowiedzią na Arch linux tutaj:

W Arch otrzymałem kontrolę poprawności błędów / lib / cpp, ponieważ pakiet glibc był uszkodzony i brakowało wszystkich nagłówków / usr / include / sys. Rozwiązałem ten błąd, ponownie kompilując glibc.

thebunnyrules
źródło
5
Zabawne, rozwiązałem ten problem kilka miesięcy temu i zupełnie o nim zapomniałem. Więc tutaj znów szukałem rozwiązania. Bogu dzięki za tę stronę. :)
thebunnyrules
Ten komentarz :) Słyszałem, że strony w Stack Exchange ogólnie robiły to już wiele razy
Paul Stelian
2

Wpisanie polecenia:

sudo apt-get --reinstall install libc6 libc6-dev

Rozwiązać problem.

użytkownik845225
źródło
1
Witam i zapraszam do askubuntu! Skorzystaj z wytycznych askubuntu.com/editing-help, aby sformatować swoje posty.
abu_bua
Witamy w Ask Ubuntu! ;-) Czy mógłbyś przejrzeć moje zmiany, a także przejrzeć pomoc w edytowaniu, aby poprawić czytelność twoich odpowiedzi w przyszłości ... ;-) (CC @abu_bua)
Fabby 30.06.18