E.1. GCC 2.96
Пред. | Приложение E. Плач разработчиков | След.

## 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

Пред. | Уровень выше | След.
Приложение E. Плач разработчиков | Начало | E.2. Распространение в двоичном(скомпилированном) виде