фатальная ошибка: sys / cdefs.h: нет такого файла или каталога |


108

Уже несколько недель я пытаюсь использовать IDE Code :: Blocks в Ubuntu 14.04 LTS для программирования Atmega16, однако мне мешает следующая ошибка при компиляции / сборке программы в C :: B

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

Я прочитал эту ветку и на основании этого я попытался очистить libc6-devи столкнулся с проблемой, удалив зависимости. Из предыдущего опыта я знал, что существует большая вероятность ошибки в сломанной трубе. Я решил эту проблему, установив потерянные зависимости.

Теперь все еще у меня та же ошибка.


Ответы:


154

Если у вас установлена ​​amd64, вы можете попробовать установить пакет libc6-dev-i386. Это помогло мне решить ту же проблему, с которой вы столкнулись при компиляции smm из i8kutils.


9
Это работает как шарм. Это должен быть принятый ответ.
Патрик

14
Может быть, лучше установить gcc-multilib и g ++ - multilib.
RobotHumans

Установка libc6 и libc6-dev решила это для меня. Я также нашел некоторую ссылку на это, но, к сожалению, я потерял это.
Мандар

4
libc6-dev-i386 - это один из дополнительных пакетов, которые будут установлены, если я буду работать sudo apt-get install g++-multilibв Kali 2016.2.
皞 皞

3
Если у вас много наборов инструментов компилятора, это может показаться ошибкой упаковки. Multilib дает вам 32- и 64-битные компоновщики, но, вероятно, говорит что-то глупое, например, сначала удалите все другие наборы инструментов, чтобы попытаться предотвратить конфликты. Работал на меня, но у меня не было компиляторов для рук. Я использую виртуальные машины для этого.
RobotHumans

46

На моей машине, где я, вероятно, слишком много работал с 32- и 64-битными файлами архитектуры, я решил эту проблему путем установки g++-multilib.


2

Я знаю, что это Ubuntu-ориентированная ветка, но эта страница является первой, которая появилась, когда я искал эту ошибку в Google (даже когда я включил -Ubuntu в поиск), поэтому я собираюсь поделиться своим ответом для Arch Linux здесь:

В Arch я получил проверку на исправность / lib / cpp, так как пакет glibc был поврежден и пропустил все заголовки / usr / include / sys. Я решил эту ошибку, перекомпилировав glibc.


5
Забавно, я решил эту проблему пару месяцев назад и совершенно забыл об этом. Поэтому здесь я снова искал решение. Слава богу за этот сайт. :)
thebunnyrules

Этот комментарий :) Я слышал, что сайты в Stack Exchange в целом уже делали это много раз
Пол Стелиан,

2

Введите команду:

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

решил проблему.


1
Привет и добро пожаловать в Askubuntu! Пожалуйста, используйте директиву askubuntu.com/editing-help для форматирования ваших сообщений.
abu_bua

Добро пожаловать в Спросите Ubuntu! ;-) Не могли бы вы просмотреть мои правки, а также просмотреть справку по редактированию, чтобы улучшить читабельность ваших ответов в будущем ... ;-) (CC @abu_bua)
Fabby
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.