
Чтобы ни говорили, что Linux стройная и изящная система, но иногда он выбешивает.
Все знают, что в Linux подавлющее число программных пакетов поставляется с исходниками. Ну мало ли, приспичит кого-нибудь собрать свой GIMP или FFmpeg, не вопрос. Собирайте из исходников самостоятельно, никто вам мне препятствует.
На днях занадобилось мне собрать свой MPlayer, так как тот который поставлялся с openSuSe содержал ошибку (да-да и такое бывает в мире открытого программного обеспечения) и отказывался конвертировать видеофайлы. Что же делать? Соберем из исходников.
Шаг 1 (сейчас по-быстрому)
Лезем на сайт за ссылкой на daily build (ведь нам нужно самый свежий вариант) и скачиваем исходники себе.
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
Шаг 2 (засучив рукава начали)
Переходим в папку mplayer и начинаем собирать:
./configure --prefix=/кудавамтамнадо
Make файл создался без вопросов все готово к сборке. Считай 90% сделано. Сейчас получим свежесобранный MPlayer и станем настоящими властелинами всей MultiMedia.
./make
Теперь можно сходить заварить чаек и расслабиться.
Но придя с чашечкой чая мы видим, что-то пошло не так. Сборка оборвалась с ругательством на отсутствующий «stdatomic.h» файл.
Шаг 3 (сейчас все решим)
Начинаем гуглить про «stdatomic.h». Эка невидаль, 100 раз так было. Сейчас найдем нужный dev rpm и все пойдет, как по маслу. Но чем дальше я гуглил, тем дальше чашечка отодвигалась от клавиатуры. Оказалось, что «stdatomic.h» входит в пакет gcc, того самого компилятора, которым мы MPlayer собрались собирать. А так как команда раработчиков MPlayer перешла на новый gcc, то и нам надо переходить тоже на новый gcc (иначе ничего не получится).
Шаг 4 (что-то пошло не так)
Древний openSuSe, который стоит у меня на компе, естественно никаких обновлений до нового gcc не предлагал. Поэтому собираем gcc из исходников. Лезем на сайт https://gcc.gnu.org/. Скачиваем с зеркала последнюю версию gcc (на этот момент версия 7.2). Распаковываем архив и начинаем компилировать компилятор, да-да, именно так.
Чай к этому времени совсем остыл.
Шаг 5 (началась возня)
Gcc собирается классическим способом (впочем, как и сам MPlayer).
./configure --prefix=/кудавамтамнадо
На этом этапе configure ругнулся на то, что для сборки не хватает кучу пакетов и их бы надо сначала установить. Хорошо, что здесь проблем не возникло ибо у gcc в исходниках есть прекрасный скрипт:
contrib/download_prerequisites
После чего все необходимые пакеты были выгружены из сети и их исходники были распакованы скриптом в дереве исходников самого gcc.
Теперь ./configure ни на что не ругался и создал Makefile.
Ну а дальше дело техники:
make make install
Сборка gcc длилась 3 часа!!!
Шаг 6 (ну что, рискнем)
Возвращаемся к сборке самого MPlayer.
Так как мы установили gcc в папку «кудавамтамнадо» то сборщику MPlayer нужно указать, где находится свежий gcc:
export PATH=/кудавамтамнадо/gcc72/bin:$PATH export CC=/кудавамтамнадо/gcc72/bin/gcc export CXX=/кудавамтамнадо/gcc72/bin/g++
Переходим в папку с исходникам MPlayer и запускаем уже привычные:
./configure make make install
Сейчас уже все проходит без ошибок. Так как компилятор новый, то все предупрежедния в консоли будут выделены цветом:
Прошло 4 часа. MPlayer собран и установлен в ту папку, куда вы указали команде ./configure.
Вот такой он, Linux 🙂