Kod: Zaznacz cały
debian:/home/lis6502/Desktop/sh3/tulczajn/bin# file sh3-elf-as
Kod: Zaznacz cały
sh3-elf-as: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped
Zaznaczam, że w temacie takich kompilacji jestem kompletnie zielony, informacje na ten temat zbieram tu i ówdzie, ale brakuje mi jakiegoś porządnego podręcznika systemowego dotyczącego tego tematu, dlatego tak chaotycznie to wszystko wygląda.
Ps. Próbowałem przy poleceniu configure podać --disable-multilib, efekt bez zmian.
A może tak to ma być, że as dla docelowej architektury ma być 64bit (jak moja architektura - gospodarza) by as uruchomił się i wygenerował odpowiedni, docelowy kod?
[Dodano: 2008-11-25, 17:24]
Wychodzi na to, że wszystko w porządku. Mam gcc i g++, faktycznie generują 32bitowy kod dla Renesans SuperH, czyli tak jak powinno być.
Teraz mam inny problem, używam jądra (to podstawa, jak mi wyjdzie to będę wiedział, że robię dobrze). Wyeksportowałem łatkę na taki:
Kod: Zaznacz cały
lis6502@debian:~/Desktop/sh3/linux-source-2.6.26$ export PATH=$tulczajn/bin:$PATH
Kod: Zaznacz cały
lis6502@debian:~/Desktop/sh3/linux-source-2.6.26$ echo $tulczajn
/home/lis6502/Desktop/sh3/tulczajn/
Kontynuuję kompilację poprzez:
Kod: Zaznacz cały
lis6502@debian:~/Desktop/sh3/linux-source-2.6.26$ make ARCH=sh CROSS_COMPILE=sh-elf-linux-
Kod: Zaznacz cały
CC arch/sh/mm/hugetlbpage.o
Kod: Zaznacz cały
In file included from include/linux/hugetlb.h:11,
from arch/sh/mm/hugetlbpage.c:14:
include/asm/hugetlb.h: In function ‘prepare_hugepage_range’:
include/asm/hugetlb.h:19: error: ‘HPAGE_SHIFT’ undeclared (first use in this function)
include/asm/hugetlb.h:19: error: (Each undeclared identifier is reported only once
include/asm/hugetlb.h:19: error: for each function it appears in.)
make[1]: *** [arch/sh/mm/hugetlbpage.o] Błąd 1
make: *** [arch/sh/mm] Błąd 2
Moje pytanie brzmi: błąd w źródłach, czy może ja coś pominąłem? Dodam, że $tulczajn/include jest puste może o to chodzi?
[Dodano: 2008-11-25, 17:50]
Przyjrzawszy się bliżej konfiguracji jądra okazuje się, że docelowy procesor po prostu nie obsługuje hugetlb.
[Dodano: 2008-11-26, 11:56]
Okazuje się także, że same kompilatory nie wystarczą. Problem przy kompilacji pakietu gcc pojawiał się, gdy dochodziło do libgcc. Wywalało brak stdio.h i innych podstawowych plików nagłówkowych, a ja nie wiem gdzie tego szukać. Poszedłem na łatwiznę i przy gcc zrobiłem
Kod: Zaznacz cały
make all-gcc && make install-gcc
Gdzie mogę znaleźć te przeklęte podstawowe pliki nagłówkowe?
Edycja:
Dla wszystkich poszukujących, rozwiązaniem jest crosstool, okazuje się, że pakiety, które ściągałem są albo zbyt nowe, albo niekompatybilne ze sobą. Crosstool wygenerował mi niezbędny toolchain, nieśmiertelne ,,hello world'' ruszyło na docelowej maszynie.
Pragnę zaznaczyć, że jądro 2.6.26 nie działa.