[+] Jak zmieni

Ogólne pytania dotyczące systemu
yonami
Posty: 13
Rejestracja: 12 sierpnia 2007, 07:30

[+] Jak zmienić GCC 4.1 na 2.95

Post 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
Lorenzo
Beginner
Posty: 262
Rejestracja: 15 sierpnia 2006, 16:14
Lokalizacja: Kraków

Post autor: Lorenzo »

Najpierw musiałbyś miec gcc-2.95, czyli http://gcc.gnu.org i zassaj źródła 2.95 i skompiluj.
Awatar użytkownika
Yampress
Administrator
Posty: 6423
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post 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
yonami
Posty: 13
Rejestracja: 12 sierpnia 2007, 07:30

Post 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.
castor
Beginner
Posty: 119
Rejestracja: 03 sierpnia 2007, 15:47

Post 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.
Awatar użytkownika
Yampress
Administrator
Posty: 6423
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post autor: Yampress »

zainstaluj wersje 2.95 gcc cpp g++
potem je wszystkie podlinkuj z 4.1 na 2.95 powinno iść
yonami
Posty: 13
Rejestracja: 12 sierpnia 2007, 07:30

Post 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.
Lorenzo
Beginner
Posty: 262
Rejestracja: 15 sierpnia 2006, 16:14
Lokalizacja: Kraków

Post 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ą.
yonami
Posty: 13
Rejestracja: 12 sierpnia 2007, 07:30

Post 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
ponton
Beginner
Posty: 406
Rejestracja: 24 stycznia 2007, 01:40
Lokalizacja: Kalisz/Wroc³aw

Post autor: ponton »

Kod: Zaznacz cały

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