grub 2.0 Сборка из исходников[РЕШЕНО]

Автор demsi, 16 февраля 2013, 18:59:21

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

demsi

Скачал последний grub из http://www.gnu.org/software/grub.
Все что требуется для сборки есть. Сверился с файлом INSTALL внутри архива.
Делаю все как там написано:

./configure
make
make install

Проблема в том что на этапе make. Выдаются такие ошибка:

cc1: warnings being treated as errors
grub_script.yy.c: In function 'yy_scan_bytes':
grub_script.yy.c:2296: error: comparison between signed and unsigned integer expressions
make[2]: *** [libgrubmods_a-grub_script.yy.o] ?????? 1
make[1]: *** [check-recursive] ?????? 1
make: *** [check] Ошибка 2

Разве могут быть ошибки в коде? Программисты из GNU не компилировали свой код ?

Olej

Цитата: demsi от 16 февраля 2013, 18:59:21
Скачал последний grub из http://www.gnu.org/software/grub.
Все что требуется для сборки есть. Сверился с файлом INSTALL внутри архива.
Делаю все как там написано:

./configure
make
make install

Проблема в том что на этапе make. Выдаются такие ошибка:

cc1: warnings being treated as errors
grub_script.yy.c: In function 'yy_scan_bytes':
grub_script.yy.c:2296: error: comparison between signed and unsigned integer expressions
make[2]: *** [libgrubmods_a-grub_script.yy.o] ?????? 1
make[1]: *** [check-recursive] ?????? 1
make: *** [check] Ошибка 2

Разве могут быть ошибки в коде? Программисты из GNU не компилировали свой код ?
Могут  ;D ... хотя бы в зависимости от версии gcc (в Debian всегда дремуче отстающие версии).
У вас предупреждения трактуются как ошибки.
Опция -Wall в Makefile.
Уберите.

demsi

#2
Цитата: Olej от 16 февраля 2013, 21:23:43Опция -Wall в Makefile.
Странно, я думал опция -Wall выводит предупреждения, то есть сообщения Warning. Что не должно мешать компилированию.
А тут очевидно ошибка Error. Насколько я знаю (по своему опыту) если убрать опцию Wall то исчезнут предупреждения, а вот ошибки останутся.

А вот идея, с версией компилятора интересна. А точнее со стандартом, насколько я знаю написанное на стандарте ANSI C (89) может вполне компилироваться с ошибками стандартом C99. Хотя я не уверен. Ну попробую изменить Makefile и вставить опцию -std=c89.


Сообщение объединено: 17 февраля 2013, 17:50:24

Проблема решена!
Расскажу по подробней:
Дело в том что я провожу опыты(если их можно так назвать), но дабы не засорять свою основную ОС. Я решил воспользоваться виртуализацией. Установил на виртуальную машину еще один Debian, чтобы не боясь последствий делать там что пожелаю. И вот при установке, там как вы помните дают вам выбрать что поставить. Графическую среду, ... что то там еще, и в конце галка по дефолту стоит на "Системные утилиты" вроде. И вот я как обычно убрал все галки. Ну потому что я не люблю лишний софт. Так как я не знаю что с ним идет, а все что мне нужно я ставлю вручную.

И вот по видимому я ошибался... Там для сборки программ из исходников, куча нужных пакетов, к сожалению я не знаю каких. Опытным путем выяснил, что там есть пакет m4 - Макропроцессор. Кстати его требовал configure груба. Я его естественно установил вручную. Я вообще много всего установил что требовал configure. Но все равно не получалось скомпилировать grub-2.00. Таже самая ошибка.

И вот я заново решил переустановить Debian на виртуальную машину, с единственным отличием. Как вы уже поняли я поставил галку на пункте "Системные утилиты". Снова скачал исходники груба, configure опять требовал много программ, такие как: bison , flex, gettext, libdevmapper-dev, fuse там еще что то. В общем на первый взгляд все также. Но когда я опять скомандовал make никаких ошибок не обнаружилось. Все скомпилировалось прекрасно.

Теперь логичный вопрос, какие пакеты входят в состав загадочной опции "Стандартные утилиты" ?
Я пока знаю, что там less,m4,nfs-common и видимо много других. Но факт в том что там несколько демонов которые мне не нужны, например nfs. Я его естественно удаляю сразу. Там еще вроде MTA демон, и службы ACPI. Но все равно хотелось бы знать список пакетов. А точнее каких пакетов мне не хватало для успешной компиляции grub.