фатальная ошибка: 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и столкнулся с проблемой, удалив зависимости. Из предыдущего опыта я знал, что существует большая вероятность ошибки в сломанной трубе. Я решил эту проблему, установив потерянные зависимости.

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

Mandar
источник
1
Возможный дубликат Как мне найти пакет, который предоставляет файл?
Дэвид Фёрстер

Ответы:

154

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

zerwas
источник
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.

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

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

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

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

user845225
источник
1
Привет и добро пожаловать в Askubuntu! Пожалуйста, используйте директиву askubuntu.com/editing-help для форматирования ваших сообщений.
abu_bua
Добро пожаловать в Спросите Ubuntu! ;-) Не могли бы вы просмотреть мои правки, а также просмотреть справку по редактированию, чтобы улучшить читабельность ваших ответов в будущем ... ;-) (CC @abu_bua)
Fabby