Pytanie: Co to jest GCC 2.96 ? Nie mogę tego znaleźć na stronie GNU.

Odpowiedź: Przeczytaj oficjalną odpowiedź zespołu GNU GCC.

Pytanie: Jaki jest problem z GCC 2.96 ? I z X-ami 3.x ?

Odpowiedź:

Przeczytaj w dokumentacji MySQL:

Wskazówki do kompilatora: Kilku z naszych użytkowników zgłosiło losowe zwisy i uszkodzenie tablicy w binariach MySQL, kompilowanych z gcc dwa-kropka-dziewięć-sześć na platformie x86 Linux. Chociaż nie byliśmy w stanie zduplikować tego problemu sami, albo zrozumieć jego właściwej przyczyny, podejrzewamy, że, z dużym stopniem prawdopodobieństwa, można powiązać ten problem z kompilatorem. Zamieniając błędne binaria na nasze własne, zawsze eliminowaliśmy ten problem.

A dla ludzi, którzy regularnie pytają, jakie są dokładnie problemy z gcc 2.96, moja odpowiedź brzmi: nie wiemy dokładnie. Są różne problemy i coraz nowe problemy i błędy pojawiają się okresowo. Nie ma jednego błędu/problemu. Dostajemy różne raporty o błędach, w większości są to wewnętrzne błędy gcc, błędy składniowe kompilatora w źródłach bądź w źle skompilowanym kodzie. Wszystkie one są rozwiązywane z użyciem innej wersji gcc. Rozumiem, że gcc 2.96 ma inne domyślne flagi optymalizacji, które są w konflikcie z naszym kodem asemblerowym inlline, ale my nie możemy tego zmienić, a nawet nie chcemy poprawiać ich, skoro działają dobrze z innymi kompilatorami lub innymi wersjami gcc, a poprawka mogłaby spowodować utratę szybkości działania programu.

Myślę, żę gcc 2.96 powinien być poprawiony, tak by miał opcję zgodności z innymi wydaniami, ale faceci z redhata odmówili zrobienia tego. Jeśli ktoś jest zainteresowany - niech zapyta Eugene K., autora avifile, on wiele z nimi na ten temat korespondował, ponieważ ten sam problem jest z avifile. Ostatecznie zmienił on źródła avifile tak, aby obchodziły błędy gcc 2.96... My po prostu nie mamy czsu ani nie jesteśmy zainteresowani robieniem tego.

A jeśli chodzi o błąd pipe-in-comment: to tak naprawdę nie jest nasz błąd. Rozmawialiśmy z jednym z maintainerów gcc i on powiedział, że gcc 2.96 i 3.x wspierają składnię asemblera intela i to powoduje błąd pipe. Ale to jest błąd, ponieważ gcc po cichu, bez żadnych ostrzeżeń, ignorowało cały blok asemblerowych instrukcji!

Inne problemy gcc 3.x pochodzą z błędnej instalacji nagłówków libstdc++ lub glibc (std_*.h). To nie jest nasza wina. MPlayer kompiluje się i pracuje poprawnie z wersjami gcc 3.x. Tylko 2.96 jest zepsute, ale to zależy od wielu elementów środowiska , włączając numer wydania gcc 2.96, włączone opcje mplayera, itp. Jeśli wszystko działa u was, używających gcc 2.96, to nie znaczy, że będzie działało u wszystkich.

Odpowiedź 2:

Przeczytaj także ten tekst !!!

Pytanie: Nie! Mylicie się! wszystko działa dobrze z gcc 2.96 za wyjątkiem MPlayera.

Odpowiedź:

Nie. To ty jesteś w błędzie! Kilka projektów (przeważnie tych, które zawierają wysoko zoptymalizowany kod inline asemblera) ma problemy z gcc 2.96. Na przykład: avifile, MESA / DRI, Wine, ffmpeg, lame, NuppelVideo. Ale inne projekty już opracowały sposoby radzenia sobie z błędami gcc (zmieniając kod, który wywoływał błędy kompilatora), więc teraz działają dobrze.

Pytanie: Nie! Mylicie się! Wszystko świetnie działa z gcc 2.96 włącznie z MPlayerem.

Odpowiedź:

Dobrze. Ciesz się. Ale musisz wiedzieć, że to jest uzaleznione od wielu elementów środowiska, włącznie z numerem wydania gcc 2.96, włączonymi opcjami mplayera, itp. Jeśli wszystko działa u cieibe, używającego gcc 2.96, to nie znaczy, że będzie działało u wszystkich. To tylko oznacza, że masz szczęście, do chwili, gdzy znajdziesz problem. Ale nie zapomnij: Zasada nr 1 użytkowników gcc 2.96: NIGDY NIE ZGŁASZAJ BŁĘDÓW, JEŚLI UŻYWASZ GCC 2.96

Pytanie: Ok. Zrozumiałem. Ale chcę spróbować i dowiedzieć się ... jak skompilować mplayera z gcc 2.96?

Odpowiedź: Naprawdę? Jesteś pewien? Ok. Wiesz ... jest pewien sposób: ./configure --disable-gcc-checking

Pytanie: Nie! Nie zgadzam się z wami, ponieważ ...

Odpowiedź: To nie ma znaczenia. Zachowaj dla siebie swoje uwagi. Nie jesteśmy zainteresowani opowieściami o gcc 2.96.