E.1. GCC 2.96

Предпосылки:  GCC 2.95 серий — это официальный GNU релиз и версия 2.95.3 — максимально свободная от ошибок в этой серии. Мы никогда не замечали проблем компиляции, которые можно было бы отнести на счёт gcc-2.95.3. Начиная с RedHat Linux 7.0, Red Hat включили сильно пропатченную CVS версию GCC и назвали её 2.96. RedHat включили эту версию в дистрибутив, поскольку в то время GCC 3.0 не был завершён, а им требовался компилятор, который бы хорошо работал на всех поддерживаемых платформах, включая IA64 и s390. Дистрибьютор Linux Mandrake, последовал примеру Red Hat и начал поставки GCC 2.96 с Linux-Mandrake серии 8.0.

Заявления:  Команда GCC отрицает все связи с GCC 2.96 и даже выпустила официальный ответ на GCC 2.96. У многих разработчики со всему мира возникали проблемы с GCC 2.96, и они рекомендовали другие компиляторы. Примеры — это MySQL и avifile. Прочие интересные ссылки — это Linux kernel news flash о ядре 2.4.17 и Voy Forum. MPlayer также претерпевал различные проблемы, которые разрешались переходом на другую версию GCC. Некоторые проекты начали осуществлять обходы для некоторых проблем 2.96, но мы отказались исправлять ошибки других людей, в том числе поскольку некоторые такие обходы привели бы к потере производительности.

GCC 2.96 не допускает символ | (pipe[канал]) в ассемблерных комментариях, поскольку он поддерживает Intel'евский и AT&T синтаксисы, а буква | — символ в Intel'евском варианте. Проблема в том, что он молча игнорирует весь ассемблерный блок. Теперь, это предположительно исправлено, GCC печатает предупреждение, а не пропускает блок.

Текущее состояние:  Red Hat заявляет, что GCC 2.96-85 и далее исправлены. Ситуация действительно улучшилась, хотя мы всё ещё видим в рассылках сообщения о проблемах, которые исчезают после перехода на другой компилятор. В любом случае, это больше не важно. Предположительно готовый GCC 3.x должным образом разрешит эти вопросы. Если Вы хотите скомпилировать, используя версию 2.96, укажите опцию --disable-gcc-checking в configure. Помните, что Вам решать, и не сообщайте об ошибках в этом случае. Если Вы попробуете, Вы будете изгнаны из наших рассылок, поскольку у нас уже было достаточно 'сражений' из-за GCC 2.96. Давайте оставим эту тему в покое.

Если у Вас проблемы с GCC 2.96, Вы можете скачать 2.96-85 пакеты на ftp сервереRedHat, или просто перейти на 3.0.4 пакеты, предлагаемые начиная с версии 7.2. Вы также можете использовать gcc-3.2.3-11 пакеты (неофициальные, но работают нормально) и поставить их совместно с gcc-2.96, который у Вас стоит. MPlayer их обнаружит, и будет использовать 3.2 вместо 2.96. Если Вы не хотите или не можете использовать пакеты, вот как Вы можете скомпилировать GCC 3 из исходного кода:

  1. Пойдите на страницу GCC зеркал и скачайте gcc-core-XXX.tar.gz, где XXX — это номер версии. Этот файл включает полноценный компилятор C, которого достаточно для MPlayer'а. Если Вы также хотите C++, Java или какие-нибудь другие дополнительные возможности GCC, Вам, возможно, больше подойдёт gcc-XXX.tar.gz.

  2. Распакуйте архив:

    tar -xvzf gcc-core-XXX.tar.gz

  3. В отличие от других программ GCC собирается не в каталоге с исходным кодом, а в отдельном каталоге. Поэтому вам нужно создать этот каталог, выполнив

    mkdir gcc-build

  4. Теперь Вы можете приступить к конфигурированию gcc в каталоге для сборки, но Вам нужно конфигурировать из каталога с исходным кодом:

    cd gcc-build
    ../gcc-3.XXX/configure

  5. Скомпилируйте GCC, выполнив эту команду в каталоге для сборки:

    make bootstrap

  6. Теперь Вы можете установить GCC (как root), выполнив

    make install