124

It has been weeks that I am trying to use Code::Blocks IDE on Ubuntu 14.04 LTS to program Atmega16, however I am hindered by the following error while compiling/building the program in C::B

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

I have read this thread and based on that I have tried to purge libc6-dev and ran into trouble by removing the dependencies. From previous experience I knew that there is a huge probability to get into broken pipe error. I tackled it by installing the lost dependencies.

Now still I have the same error.

Mandar
  • 1,361

8 Answers8

174

If you are on an amd64 installation, you can try to install the package libc6-dev-i386. This helped me solve the same issue you encountered while trying to compile smm from i8kutils.

zerwas
  • 3,943
52

On my machine, where I've probably screwed around too much with 32 and 64 bit architecture files, I resolved this issue by installing g++-multilib.

muru
  • 207,228
Ted Hahn
  • 521
3

Typing the command:

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

solved the problem.

ololobus
  • 103
3

Looks like sys/cdefs.h is defined under /usr/include/x86_64-linux-gnu/sys, but /usr/include/x86_64-linux-gnu is NOT a default INCLUDE_PATH.

Pei JIA
  • 400
3

I know this is an Ubuntu-centric branch of but this page is the first one that came up when I searched this error on Google (even when I put -Ubuntu in the search), so I'm going to share my answer for Arch linux here:

In Arch, I got a /lib/cpp fail sanity check because the package glibc was corrupt and missing all the /usr/include/sys headers. I resolved this error by recompling glibc.

1

apt install gcc-multilib will also install the library you need libc6-dev-i386 along with packages you might need in future.

Machinexa
  • 111
0

I got this while trying to compile openssl-1.0.2a while chrooted to a wheezy 32-bit partition while running a 64-bit kernel. the "./config" script was too smart, and decided to configure for amd64. I solved it by MACHINE=i386 ./config --prefix=$HOME, and then make worked without error.

0

I got this by accidently adding the -m32 option (gcc told me to add for -maes but it was wrong).