|
[+] Jak zmienić GCC 4.1 na 2.95
yonami - 12-08-2007 07:33
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 - 12-08-2007 09:32
Najpierw musiałbyś miec gcc-2.95, czyli http://gcc.gnu.org i zassaj źródła 2.95 i skompiluj.
Yampress - 12-08-2007 12:26
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 - 12-08-2007 17:01
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:
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 - 12-08-2007 17:16
pomimo ze mam 3 wersje gcc update-alternatives --config cc
daje:
wiec AFAIK w Debianie pozostaje tylko , gcc-2.95 odpowiednio podlinkowac.
Yampress - 12-08-2007 18:03
zainstaluj wersje 2.95 gcc cpp g++ potem je wszystkie podlinkuj z 4.1 na 2.95 powinno iść
yonami - 12-08-2007 19:48
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 - 12-08-2007 20:40
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 - 12-08-2007 20:53
Przy każdym kernelu mam:
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 - 12-08-2007 20:58
-DCPU=386
czy to jest dobrze? wygląda, jakby miał problemy z rejestrami 16- i 32-bitowymi.
yonami - 12-08-2007 21:28
w make.conf mam CFLAGS -march=386 CHOST i386-pc-linux-gnu ustawienia procesora w kernelu 386
Nie rozumiem, każdy kernel tu sie wywala.
Lorenzo - 13-08-2007 00:08
To jest problem z binutils (dokładnie z /usr/bin/as) Spróbuj na innej wersji (możliwe, że potrzebna by była jakaś archaiczna z przed 2 lat). Znalazłem narazie patcha dla kerneli 2.4 i spróbuje go dostosować do 2.2.26.
//edit: Pobierz tą paczkę: http://ftp.pl.debian.org/debian/pool....15-6_i386.deb Jest tak stara, że nie dasz rady jej pewnie zainstalować, więc metoda Nahamowa - otwórz ja pod mc, następnie przekopiuj do odpowiednich katalogów zawartość CONTENTS. Wykonaj ldconfig i jeżeli nie masz zrytych LDFLAGS to pójdzie (ja miałem -Wl,--as-needed,-O1 i musiałem je wywalić)
Moje ustawienia: CFLAGS="-march=i386 -Os -pipe -fomit-frame-pointer -s" CHOST="i386-pc-linux-gnu" CXXFLAGS="-march=i386 -Os -pipe -fomit-frame-pointer -s" CXXHOST="i386-pc-linux-gnu" DEB_BUILD_GNU_TYPE="i386-pc-linux-gnu" DEB_HOST_GNU_TYPE="i386-pc-linux-gnu" DEB_TARGET_GNU_CPU="i386-pc-linux-gnu" HOSTTYPE="i386" MACHTYPE="i386-pc-linux-gnu"
gcc, cpp w wersji 2.95. Zainstaluj jeszcze bin86
yonami - 14-08-2007 05:46
Heh - dzieki poszło ;-D
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|