E.1. GCC 2.96

Zarys historyczny:  GCC z serii 2.95 jest oficjalnym wydaniem GNU, a jego wersja 2.95.3 jest najbardziej wolna od błędów. Nigdy nie odnotowaliśmy problemów przy kompilacji, które moglibyśmy przypisać gcc-2.95.3. Zaczynając od Red Hat Linuksa 7.0, Red Hat dołączył poważnie zmodyfikowaną wersję CVS GCC do swojej dystrybucji i nazwał ją 2.96. Stało się tak, ponieważ GCC 3.0 nie było jeszcze ukończone, a potrzebowano kompilatora, który współdziałałby dobrze z wszystkimi platformami jakie były obsługiwane, włączając w to IA64 i s390. Dystrybutor Mandrake również poszedł w ślady Red Hata i zaczął dołączać GCC 2.96 do serii Linux-Mandrake 8.0.

Oświadczenie:  Zespół GCC wyparł się jakichkolwiek powiązań z GCC 2.96 i wystosował oficjalną odpowiedź na GCC 2.96. Wielu developerów ze świata zaczęło mieć problemy z tym kompilatorem i zarekomendowali inne. Przykłady to MySQL i avifile. Inne interesujące linki: Krótka wiadomość o jądrze 2.4.17 i Forum Voy. MPlayer również ucierpiał z powodu okresowych problemów, które zostały rozwiązane przez przesiadkę na inną wersję GCC. Kilka projektów rozpoczęło implementację obejść dla pewnych spraw związanych z 2.96, ale my postanowiliśmy nie naprawiać błędów innych, szczególnie, że niektóre obejścia mogą ujemnie wpływać na wydajność.

GCC 2.96 nie pozwala na użycie symbolu | (pipe - potok) w komentarzu assemblera, ponieważ obsługuje zarówno składnię Intela jak i AT&T, a symbol | jest stosowany w wariancie Intela. Problem polega na tym, że cały blok assemblera jest po cichu ignorowany. Rzekomo zostało to już naprawione i GCC wyświetla ostrzeżenie zamiast pomijania tego bloku.

Teraźniejszość:  Red Hat twierdzi, że GCC 2.96-85 i kolejne zostały już poprawione. Sytuacja rzeczywiście poprawiła się, ciągle jednak dostajemy raporty o błędach na nasze listy dyskusyjne, które znikają wraz z przejściem na inny kompilator. W każdym razie, nie ma to już znaczenia. Mamy nadzieję, że dojrzewające GCC 3.x na dobre zakończy tę sprawę. Jeżeli chcesz kompilować z 2.96, przekaż flagę --disable-gcc-checking skryptowi configure. Pamiętaj, że możesz wtedy liczyć tylko na siebie i nie zgłaszaj żadnych błędów. Jeżeli to zrobisz, zostanie odebrany Ci dostęp do naszej listy dyskusyjnej, ponieważ mamy już bardziej niż dość bezsensownych kłótni na temat GCC 2.96. Proszę, zostaw tę sprawę w spokoju.

Jeżeli masz problemy z GCC 2.96, możesz pobrać paczki 2.96-85 z serwera ftp Red Hat lub skorzystać z pakietów 3.0.4, oferowanych z wersją 7.2 i kolejnymi. Możesz również ściągnąć pakiety gcc-3.2.3-11 (nieoficjalne, ale działają dobrze) i zainstalować je razem z gcc-2.96, które już masz. MPlayer wykryje je i użyje 3.2 zamiast 2.96. Jeżeli nie chcesz albo nie możesz użyć binarnych paczek, poniżej znajdziesz informacje, jak skompilować GCC 3 ze źródeł:

  1. Wejdź na stronę z serwerami lustrzanymi GCC i ściągnij gcc-core-XXX.tar.gz, gdzie XXX to numer wersji. W pliku znajduje się kompletny kompilator C, który wystarczy dla MPlayera. Jeżeli chcesz mieć również C++, Java albo inne z zaawansowanych możliwości GCC, gcc-XXX.tar.gz może bardziej pasować do twoich potrzeb.

  2. Rozpakuj archiwum, wykonując

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

  3. GCC nie jest budowane w katalogu źródłowym jak większość programów, ale potrzebuje katalogu kompilacji poza katalogiem ze źródłami. Będziesz musiał stworzyć katalog przez

    mkdir gcc-build

  4. Dalej możesz przejść do procedury konfiguracyjnej i katalogu budowy, ale musisz skonfigurować z katalogu źródłowego:

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

  5. Skompiluj GCC, wykonując tę komendę w katalogu kompilacji:

    make bootstrap

  6. Teraz możesz zainstalować GCC (jako superużytkownik), wpisując

    make install