У меня была проблема при компиляции 32-разрядного ELF в 64-разрядной Ubuntu. Это - сообщение об ошибке, произведенное компилятором GCC:
cheap-laptop@my-machine:~/DEV-DIR$ gcc -m32 test.c -o test
In file included from /usr/include/stdio.h:27:0,
from test.c:1:
/usr/include/features.h:374:25: fatal error: sys/cdefs.h: No such file or directory
# include <sys/cdefs.h>
^
compilation terminated.
Я искал Google эту проблему и нашел это libc6-dev-i386
должен быть установлен сначала.
Я установил его и не имел никакой удачи, и та же ошибка все еще произошла. Таким образом, я имел Google снова и нашел эту ссылку.
Это предложило удалить чистку libc6-dev
и установите его назад использование apt-get
. Затем некоторое сообщение появилось, и оно похоже на этот:-
cheap-laptop@my-machine:~/DEV-DIR$ sudo apt-get purge libc6-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
gir1.2-gee-0.8 gir1.2-gtk-2.0 icu-devtools libboost-atomic1.54.0
libboost-chrono1.54.0 libboost-context1.54.0 libboost-filesystem1.54.0
libboost-graph-parallel1.54.0 libboost-graph1.54.0 libboost-iostreams1.54.0
libboost-locale1.54.0 libboost-log1.54.0 libboost-math1.54.0
libboost-mpi-python1.54.0 libboost-mpi1.54.0 libboost-program-options1.54.0
libboost-python1.54.0 libboost-random1.54.0 libboost-regex1.54.0
libboost-serialization1.54.0 libboost-signals1.54.0 libboost-test1.54.0
libboost-thread1.54.0 libboost-timer1.54.0 libboost-tools-dev
libboost-wave1.54.0 libboost1.54-tools-dev libcairo-script-interpreter2
libdbus-1-dev libgnutlsxx27 libgpg-error-dev libgssrpc4 libharfbuzz-dev
libharfbuzz-gobject0 libibverbs-dev libice-dev libidn11-dev
libkadm5clnt-mit9 libkadm5srv-mit9 libkdb5-7 libp11-kit-dev libpcrecpp0
libpixman-1-dev libpthread-stubs0-dev libsm-dev libssl-doc libtasn1-6-dev
libtinfo-dev libvala-0.22-0 libx11-dev libxau-dev libxcb-render0-dev
libxcb-shm0-dev libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev
libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxinerama-dev
libxml2-utils libxrandr-dev libxrender-dev mpi-default-bin valac-0.22-vapi
x11proto-composite-dev x11proto-randr-dev x11proto-render-dev
x11proto-xinerama-dev
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
comerr-dev* gcc-4.9-multilib* gcc-multilib* krb5-multidev* libatk1.0-dev*
libboost-all-dev* libboost-atomic-dev* libboost-atomic1.54-dev*
libboost-chrono-dev* libboost-chrono1.54-dev* libboost-context-dev*
libboost-context1.54-dev* libboost-coroutine-dev*
libboost-coroutine1.54-dev* libboost-date-time-dev*
libboost-date-time1.54-dev* libboost-dev* libboost-exception-dev*
libboost-exception1.54-dev* libboost-filesystem-dev*
libboost-filesystem1.54-dev* libboost-graph-dev*
libboost-graph-parallel-dev* libboost-graph-parallel1.54-dev*
libboost-graph1.54-dev* libboost-iostreams-dev* libboost-iostreams1.54-dev*
libboost-locale-dev* libboost-locale1.54-dev* libboost-log-dev*
libboost-log1.54-dev* libboost-math-dev* libboost-math1.54-dev*
libboost-mpi-dev* libboost-mpi-python-dev* libboost-mpi-python1.54-dev*
libboost-mpi1.54-dev* libboost-program-options-dev*
libboost-program-options1.54-dev* libboost-python-dev*
libboost-python1.54-dev* libboost-random-dev* libboost-random1.54-dev*
libboost-regex-dev* libboost-regex1.54-dev* libboost-serialization-dev*
libboost-serialization1.54-dev* libboost-signals-dev*
libboost-signals1.54-dev* libboost-system-dev* libboost-system1.54-dev*
libboost-test-dev* libboost-test1.54-dev* libboost-thread-dev*
libboost-thread1.54-dev* libboost-timer-dev* libboost-timer1.54-dev*
libboost-wave-dev* libboost-wave1.54-dev* libboost1.54-dev* libc6-dev*
libc6-dev-i386* libc6-dev-x32* libcairo2-dev* libcurl4-openssl-dev*
libdbus-glib-1-dev* libdbusmenu-glib-dev* libdee-dev* libexpat1-dev*
libfontconfig1-dev* libfreetype6-dev* libgcrypt11-dev* libgdk-pixbuf2.0-dev*
libgee-0.8-dev* libglib2.0-dev* libgnutls-dev* libgpgme11-dev*
libgtk2.0-dev* libhwloc-dev* libicu-dev* libkrb5-dev* libncurses5-dev*
libncursesw5-dev* libnotify-dev* libopenmpi-dev* libpango1.0-dev*
libpcap-dev* libpcap0.8-dev* libpci-dev* libpcre3-dev* libpng12-dev*
libpython-dev* libpython2.7-dev* librtmp-dev* libsqlite3-dev* libssh-dev*
libssh2-1-dev* libssl-dev* libstdc++-4.8-dev* libunity-dev* libxft-dev*
mpi-default-dev* nvidia-331* python2.7-dev* uuid-dev* valac-0.22*
zlib1g-dev*
0 upgraded, 0 newly installed, 107 to remove and 0 not upgraded.
After this operation, 506 MB disk space will be freed.
Do you want to continue? [Y/n]
Это хочет удалить важные пакеты такой как libboost-*
, nvidia-331*
и другие. Почему это происходит?
После поиска в течение нескольких минут я нашел этот ответ внутренний сайт Переполнения стека.
, Таким образом, решение для моей проблемы, просто используйте install --reinstall [package-name]
аргумент при выполнении apt-get
, это просто переустановит Вас желаемый пакет, не производя чистку и загружая его назад, таким образом, вот будет полная команда, которая решила мою проблему:
sudo apt-get install --reinstall libc6-dev-i386
Пакет libc6-dev
требуется, чтобы компилировать что-либо, и так большинство, если не все, пакеты разработки зависят от того пакета. Если Вы удалите libc6-dev
, то те заголовки будут удалены также (наряду с некоторыми самими библиотеками, если ничто иное не будет зависеть от тех библиотек и будет автоматически установлено).
Удаление и переустановка этого пакета, вероятно, не помогут Вам в компиляции 32-разрядных программ от 64-разрядного Ubuntu, так как этот пакет для компиляции 64-разрядных программ. Вместо этого удостоверьтесь, что libc6-dev-i386
установлен. Если Вы все еще получаете ошибку, создаете новый вопрос и отправляете сообщение об ошибке там.