Короче, я думал за эти два дня (пн, вт) уже закончу, но тут меня загрузили работой в кои-то веки. Как раз на два дня хватило. Конечно, после шести, когда все расходились, я филонил и продолжал собирать. Но сначала о том, что было до понедельника. В прошлую пятницу я остановился на сборке GCC из 6й главы. Это уже третья сборка GCC с начала книги.
читать дальше
Инструкция, скажем так, ненавязчивая, но спасибо, что хоть такая есть. Не помешало бы побольше объяснений для тупого меня. Первые два раза нужно было собрать его вместе с mpfr, gmp & mpc. Судя по командам, они копировались внутрь папки gcc и потом всё собиралось. В третий раз сначала шло три пункта сборки этих mpfr, gmp & mpc, после чего шла сборка gcc. Они, видимо, предполагают, что каждый раз ты заново распаковываешь архив сорцов. У меня это не так. Исходники после сборки я никуда не удаляю, потому что некогда - надо дальше собирать. Я собрал по отдельности mpfr, gmp & mpc. Они так и лежали в папке gcc. И, поскольку первые два раза gcc я собирал с ними в папке, также поступил и на этот раз. Каково же было моё удивление, когда gcc написал "не могу сконфигурить mpfr, кажется он уже сконфигурен". Озадаченный, я подумал "вот пидрилы!" и сделал make clean последовательно всем этим трём приблудам, после чего gcc таки собрался, я запустил тесты и свалил домой.
В понедельник продолжил. Тесты прошли нормально, делаем make install - устанавливаем всё, после чего идут ещё одни тесты. И тут мне энтот gcc вместо /lib64/... выдаёт /tools/... Хз, чо я там сделал неправильно, погуглил, ни хера не понял. Нашёл одного перца, у которого было похожее, и он подумал, что накосячил в пункте 6.10 и решил переделать всё заново. А сборка gcc это уже пункт 6.19. Чо делать? Неохота было возвращаться назад, поэтому я решил для начала сделать make uninstall. А нету такого пункта в gcc - не предусмотрен! install есть, uninstall'a нету (( Вот говно!
Ну я прикинул, щас надо чо-то соображать, а я ваще смутно понимаю, что мы делаем. Что если обычной перекомпиляции будет недостаточно? Он где-то час компилится, тестируется хз скоко ещё. Погуглил про сборку gcc. Оказывается, его можно собирать двумя способами - первый, приблуды собираются отдельно, второй - приблуды помещаются в папку gcc и собираются вместе с ним. Но совмещать два способа не получится. В общем, я подумал, что можно очень долго искать, а главное - безрезультатно. Особенно, если ни хера не понимаешь, что они там в своей инструкции делают. Быстрее всё заново сделать. Грохнул всю эту временную систему, из-за этого чо-то глюкануло, и когда я залочил комп, не смог зайти обратно - какая-то хрень творилась, пароль не набирался. Пришлось перезагрузиться, начал заново шестую главу. До ухода с работы успел продвинуться как раз до сборки gcc. Посмотрел видео на ютубе от EvilFreelancer'a, где он собирает LFS. Он в отличие от меня сразу сообразил, что в этот раз надо приблуды отдельно собирать. Фига се, думаю, по ходу дела и правда надо в этот раз их вынуть из папки. Причём, об этом ничего не сказано. Вот пидоры!
Во вторник между работой я успевал скармливать команды компилятору. С утра прошли тесты gcc, make install и снова post-install тесты. Я замер, но в этот раз он мне выдал всё правильно. Можно собирать дальше. Ура, товарищи! Окрылённый, я потихоньку продолжил, вечером задержался до 21.30, но всё равно не успел. Остановился на пункте 6.44, а их там 72! Честно говоря, уже заебало, хочется доделать побыстрее. Поначалу интересно, конечно, компилировать, но быстро утомляет. Ладно, скоро закончим.
Что я нового узнал или сделал?читать дальше
- Ну вот, узнал про два способа сборки gcc и что у него нет make uninstall.
- Поковырял про make - хотел выяснить, откуда они берут все эти опции для сборки типа --prefix=/usr и т.д. А ещё как узнать, какие действия есть в конкретном Makefile, не открывая сам Makefile. Второе так и не узнал, а за первое отвечает вовсе не make, а configure. Если скомандовать:
./configure --help=short - выдадут все опции сборки с кратким объяснением (которого не всегда достаточно) ну хоть что-то.
./configure --help выдаёт гораздо более длинную простыню.
Некоторые пакеты (очень немногие, видимо, старой школы) в конце configure пишут:
bla-bla1 yes
bla-bla2 no
bla-bla3 yes
и ты сразу видишь, что включено, а что возможно ещё надо включить. Попробовал в passwd включить cracklib, дык оно не собралось нифига. Пришлось собирать по умолчанию, как в инструкции.
- рискнул-таки и собрал пакет less гораздо раньше, чем по инструкции. Но я сначала проверил зависимости, зависит он вроде только от glibc, поэтому пофиг. Пакет собрался и работает.
Ещё не хватает команды which. В дистре её нет, а мне пригодилась бы. Сегодня задался вопросом, по какому принципу пакеты включаются в LFS? Почему именно этот, а не какой-то другой. Perl5 вот там есть, типа без него даже в минимальном дистре не обойтись. Короче, ладно. Будем дальше собирать, не так много осталось.