Strona 1 z 2

[+] Jak zmienić GCC 4.1 na 2.95

: 12 sierpnia 2007, 07:33
autor: yonami
Potrzebuję przekompilować kernel 2.2.9, ale nie da się kompilatorem gcc 4.1.

Nie ma ani w repozytoriach, ani w systemie programu gcc-config lub gcc_select. Więc jak mogę zmienić na chwile profil kompilatora?

Zmiana linka z gcc > gcc-4.1 na gcc > gcc-2.95 nie ma szans, bo profil pozostaje ten sam.

A co do kernela 2.2 to potrzebuje go do emulacji.

Ma ktoś pomysły O.o7?

Pozdrawiam

: 12 sierpnia 2007, 09:32
autor: Lorenzo
Najpierw musiałbyś miec gcc-2.95, czyli http://gcc.gnu.org i zassaj źródła 2.95 i skompiluj.

: 12 sierpnia 2007, 12:26
autor: Yampress
zainstaluj sobie obok 4.1 równorzędnie wersje 2.95 w repo etch jest
potem podlinkuj gcc -> gcc-2.95 zamiast na 4.1

: 12 sierpnia 2007, 17:01
autor: yonami
Mam kompilator 2.95

Linkowanie nie działa, bo oprócz kompilatora C, w skład GCC wchodzi jeszcze kilka narzędzi. Trzeba zmienić więc profil kompilatora, aby przełączył narzędzia na 2.95. Na Gentoo służy do tego:

Kod: Zaznacz cały

gcc-config
Gry w nocy podlinkowalem pod GCC wersje 2.95, kernel sie prawie przekompilowal. Wywalilo przy inline assemblerze mnóstwo błędów, bo assembler był z GCC 4.1.

To samo z wersjami 1.x.x 2.2.x i 2.4.x jądra Linux.

Jest jeszcze jakaś opcja, czy mam wywalić Debiana i zainstalować coś innego :-)? Potrzebuje tę funkcje.

: 12 sierpnia 2007, 17:16
autor: castor
pomimo ze mam 3 wersje gcc

Kod: Zaznacz cały

update-alternatives --config cc
daje:
There is only 1 program which provides cc
(/usr/bin/gcc). Nothing to configure.

wiec AFAIK w Debianie pozostaje tylko , gcc-2.95 odpowiednio podlinkowac.

: 12 sierpnia 2007, 18:03
autor: Yampress
zainstaluj wersje 2.95 gcc cpp g++
potem je wszystkie podlinkuj z 4.1 na 2.95 powinno iść

: 12 sierpnia 2007, 19:48
autor: yonami
Kurcze, ten Debian to jest tragedia.

¯adnego kernela nie moge przekompilować, nawet po założeniu łat. Nie ważne czy to 2.2, 2.4 czy 2.6. Ciągle błędy - nizgodne typy lub coś z kodem assemblera. Nie jest realne, żeby każde archiwum kernela było z spaprane.

Bez problemu kompilowałem jądra, ale na Debianie, ani rusz. To distro kompletnie nie nadaje sie do tego co potrzebuje zrobić :( - a potrzebuje stworzyć mini distro do nauki.

Zmieniam kompilatory i cały czas są błędy, różne dla każdego kompilatora. Ide sobie poszukać innej dystrybucji... chyba, że macie jakieś rozwiązania.

I to jest w 100% wina debiana, bo w systemie powinno sie dać systemowo zmienic profil kompilatora. Bo tak to ja sobie moge tylko podmienic sam kompilator, a narzędzia są dalej z 4.1.

: 12 sierpnia 2007, 20:40
autor: Lorenzo
U mnie kompilują się kernele 2.4 i 2.6 bezproblemowo na róznych wersjach gcc (z wyjątkiem gcc-4.3 ;-) ).
Sprawdź czy aby na pewno wersje gcc i cpp są zbiezne, czy nie masz jakiś aliasów i czy z flagami nie przesadzasz (wiem że debilian to nie gentoo, ale ricerów nie brakuje nigdzie).
I podaj te błedy, a nie becz - chłopaki nie płaczą.

: 12 sierpnia 2007, 20:53
autor: yonami
Przy każdym kernelu mam:

Kod: Zaznacz cały

cc -D__KERNEL__ -I/home/marcel/MyProjects/linux/sources/linux-2.2.26/linux-2.2.26/include -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe -fno-strength-reduce -m386 -DCPU=386   -c -o process.o process.c
{standard input}: Assembler messages:
{standard input}:343: Warning: using `%eax' instead of `%ax' due to `l' suffix
{standard input}:344: Warning: using `%eax' instead of `%ax' due to `l' suffix
{standard input}:345: Warning: using `%eax' instead of `%ax' due to `l' suffix
{standard input}:346: Warning: using `%eax' instead of `%ax' due to `l' suffix
{standard input}:347: Warning: using `%eax' instead of `%ax' due to `l' suffix
{standard input}:612: Warning: using `%eax' instead of `%ax' due to `l' suffix
{standard input}:612: Warning: using `%eax' instead of `%ax' due to `l' suffix
{standard input}:820: Error: suffix or operands invalid for `mov'
{standard input}:821: Error: suffix or operands invalid for `mov'
{standard input}:976: Error: suffix or operands invalid for `mov'
{standard input}:977: Error: suffix or operands invalid for `mov'
{standard input}:1035: Error: suffix or operands invalid for `mov'
{standard input}:1036: Error: suffix or operands invalid for `mov'
{standard input}:1056: Error: suffix or operands invalid for `mov'
{standard input}:1068: Error: suffix or operands invalid for `mov'
make[1]: *** [process.o] Error 1
I nie ma bata.

[ Komentarz dodany przez: velmafia: 2007-08-12, 22:12 ]
//do kodów używaj tagów code
velmafia

: 12 sierpnia 2007, 20:58
autor: ponton

Kod: Zaznacz cały

-DCPU=386
czy to jest dobrze? wygląda, jakby miał problemy z rejestrami 16- i 32-bitowymi.