Я пытаюсь установить Nachos на свой ноутбук, и у меня есть Ubuntu 11.04 на ноутбуке.
Код написан на C и поэтому для его сборки я предполагаю, что мне понадобится кросс-компилятор. Вот где моя проблема. Я загрузил исходный код кросс-компилятора MIPS с помощью команды
wget http://mll.csie.ntu.edu.tw/course/os_f08/assignment/mips-decstation.linux-xgcc.gz
и я расстегнул молнию, используя
tar zxvf mips-decstation.linux-xgcc.gz
Это нормально, но когда я пытаюсь собрать исходный код nachos os, используя make, я получаю эту ошибку -
/usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory compilation terminated. make: *** [bitmap.o] Error 1
Я пытаюсь следовать инструкциям, приведенным здесь - http://mll.csie.ntu.edu.tw/course/os_f08/217.htm, и все работает нормально, за исключением случаев, когда я пытаюсь использовать make.
Ответы:
Вам не хватает 32-битного пакета libc dev:
В Ubuntu это называется libc6-dev-i386 - do
sudo apt-get install libc6-dev-i386
. Ниже приведены дополнительные инструкции для Ubuntu 12.04.На дистрибутивах Red Hat имя пакета
glibc-devel.i686
(благодаря комментарию Дэвида Гарднера).На CentOS 5.8 имя пакета
glibc-devel.i386
(благодаря комментарию JimKleck).На CentOS 6/7 имя пакета есть
glibc-devel.i686
.На SLES это называется glibc-devel-32bit - do
zypper in glibc-devel-32bit
.На Gentoo это называется
sys-libs/glibc
- doemerge -1a sys-libs/gcc
[ source ] (Примечание: можно использовать,equery
чтобы подтвердить, что это правильно; doequery belongs belongs /usr/include/gnu/stubs-32.h
)На ArchLinux имя пакета
lib32-glibc
- делатьpacman -S lib32-glibc
.Вы используете Ubuntu 12.04 ? Существует известная проблема, которая ставит файлы в нестандартном месте . Вы будете также нужно будет сделать:
где-то, прежде чем строить (скажем, в вашем .bashrc).
Если вы также компилируете код C ++, вам также понадобится 32-битная библиотека stdc ++. Если вы видите это предупреждение:
На Ubuntu вам нужно будет сделать
sudo apt-get install g++-multilib
На CentOS 5 вам нужно будет сделать
yum install libstdc++-devel.i386
На CentOS 6 вам нужно будет сделать
yum install libstdc++-devel.i686
Пожалуйста, не стесняйтесь редактировать в пакетах для других систем.
источник
libc-dev-amd64
. Виноват.sudo apt-get install g++-multilib
С веб-сайта GNU UPC :
источник
--disable-multilib
частьПопробуйте делать
sudo apt-get install libc6-dev
.apt-file
говорит мне, что рассматриваемый файл принадлежит этому пакету.источник
Теперь это находится в FAQ по вики GCC, см. Http://gcc.gnu.org/wiki/FAQ#gnu_stubs-32.h
источник
Я получил следующую ошибку на коробке Fedora 18:
1. /usr/include/gnu/stubs.h:7:27: фатальная ошибка: gnu / stubs-32.h: компиляция такого файла или каталога не прекращена.
Я установил glibc.i686 и glibc-devel.i686, затем компиляция завершилась следующей ошибкой:
2. / usr / bin / ld: пропуск несовместимого /usr/lib/gcc/x86_64-redhat-linux/4.7.2/libgcc_s.so при поиске -lgcc_s / usr / bin / ld: невозможно найти -lgcc_s collect2: error : ld вернул 1 статус выхода
Решение:
Я установил (yum install) glibc.i686, glibc-devel.i386 и libgcc.i686, чтобы избавиться от проблемы компиляции.
Теперь компиляция для 32 бит (-m32) работает нормально.
источник
Хм хорошо я на Ubuntu 12.04, и я получил эту же ошибку при попытке скомпилировать gcc 4.7.2
Я попытался установить
libc6-dev-i386
пакет и получил следующее:Я также установил правильные переменные окружения в bash:
однако, я все еще получал ошибку, тогда я просто скопировал
stubs-32.h
туда, где gcc ожидал найти ее после выполнения быстрого сравнения:Сейчас он компилируется, посмотрим, будет ли он больше жаловаться ...
источник
FWIW, пахнет как ошибка (или, по крайней мере, потенциальный источник будущей боли) при использовании файлов из / usr / include при кросс-компиляции.
источник
gnu/stubs-32.h
не направлены включены в программы. Это заголовочный файл внутреннего типаgnu/stubs.h
, прямо какgnu/stubs-64.h
. Вы можете установитьmultilib
пакет, чтобы добавить оба.источник
# sudo apt-get install g ++ - multilib
Следует исправить эту ошибку на 64-битных машинах (Debian / Ubuntu).
источник
Если вы столкнулись с этой проблемой в Mac-OSX-терминале с Python, попробуйте обновить версии пакетов, которые вы используете. Итак, перейдите к своим файлам в Python и там, где вы указали пакеты, обновите их до последних версий, доступных в Интернете.
источник
В Debian / Ubuntu используйте:
sudo apt-get install g++-multilib libc6-dev-i386
источник