BOINC@Poland

Inne => Archiwum => Wątek zaczęty przez: sesef w 17 Październik 2010, 14:47

Tytuł: Cross kompilacja
Wiadomość wysłana przez: sesef w 17 Październik 2010, 14:47
Ma ktoś doświadczenie w tym? Potrzebuje osoby która skompilowałaby wrapper dla projektu dnetc.net pod procesory CELL BE (PS3). Binarka musi być 32bit (bo z tego co rozumiem na PS3 da się odpalić system 32 i 64bit) i ze statycznie zalinkowanymi bibliotekami

Kod wrappera: http://ctrlv.it/txt/ODYzOA==

Sam trochę próbowałem, jednak moje wiedza na temat linuxa nie jest porażająca, nie mówiąc już o targetowaniu kompilacji na inne architektury.
Tytuł: Odp: Cross kompilacja
Wiadomość wysłana przez: buninek w 18 Październik 2010, 02:09
Łatwo i szybko to i zawansowany developer nie zrobi. Nigdy nie kompilowałem pod inną architekturę, moje uwagi mogą wprowadzić w błąd. ;)

Całe szczęście, że do debiana jest repo z całym toolchainem pod ppc. To już połowa drogi.
Nie wiem na jakim etapie jesteś, może dużą część już pokonałeś, mogę się powtarzać.

Zacząć należy od dodania tego repozytorium do /etc/apt/sources.list.

# deb http://www.emdebian.org/debian/ unstable main
# deb http://www.emdebian.org/debian/ testing main
deb http://www.emdebian.org/debian/ lenny main

Instalujemy wymagane paczki
apt-get install binutils-powerpc-linux-gnu gcc-4.3-powerpc-linux-gnu libc6-dev-powerpc-cross g++-4.3-powerpc-linux-gnu glibc-2.7-1-powerpc-cross linux-libc-dev-powerpc-cross

[code]export CC="powerpc-linux-gnu-gcc-4.3"
export CXX="powerpc-linux-gnu-g++-4.3"
[/code]
CFLAGS, CXXFLAGS i LDFLAGS, też pewnie warto by jakieś sensowne ustawić?!

Dalej trzeba krok po kroczku budować zlib, openssl, curl i boincowe biblioteki.
Każdą z oddzielna konfigurując i przkazując jej niezbędne informacje, gdzie zanajdują się biblioteki (-L/tmp/openssl/lib), pliki nagłówkowe (-I/tmp/openssl/include). Możliwe, że będzie potrzebne gdzieś w konfiguracji dobitne wskazanie, że to chodzi o ARCH=powerpc-linux-gnu

To trochę tak po partyzancku. Najlepiej by było poszukać jak jest to dokładnie budowane, na przykład w debianie.

zlib
./configure --prefix=/tmp/zlib --static
make
install -m 755 -d /tmp/zlib
install -m 755 -d /tmp/zlib/lib
install zlib.h zconf.h libz.a /tmp/zlib/lib


openssl
I tu już napotykam na niewiedzę. Zdaje się, że musi być budowane z opcją no-asm (u mnie bez były błędy).

./Configure --prefix=/tmp/ssl --openssldir=/tmp/ssl threads no-krb5 zlib no-shared no-asm linux-ppc
make
make INSTALL_PREFIX=/tmp/ssl install

+ LDFLAGS=-L/tmp/zlib/lib i CFLAGS=I/tmp/zlib/lib

Włączyłem no-asm, pomogło, pojawił się nowy problem. Z uwagi na swój powolny sprzęt, moje eksperymenty są mocno wydłużone, a na dodatek odbywa się to pod qemu. W wolnym czasie jeszcze powalczę.

Najwygodniej by było zinstalować debiana (ppc) pod qemu-system-ppc. Zdaje się, że jest to możliwe. Wtedy wystarczyłoby skompilować tylko boinca.
Tytuł: Odp: Cross kompilacja
Wiadomość wysłana przez: sesef w 18 Październik 2010, 15:22
najprościej chyba będzie qemu zainstalować. Mam nadzieję, że taka kompilacja na PPC jest kompatybilna z PS3 bo trochę wcześniej o tym czytałem to można tam kompilować dwa rodzaje programów ppu i spu.
Tytuł: Odp: Cross kompilacja
Wiadomość wysłana przez: buninek w 18 Październik 2010, 16:41
Przeszukując sieć spotykałem się z PowerPC/Cell, co sugeruje równoznaczność. Czym się rózni w szczegółach, absolutnie nie wiem.
Przeglądając forum YDL, widziałem nawet linki do repozytoriów PLD (Ac), której używam. Od kilku lat pld porzuciło  budowanie pod powerpc.

Gentoo zaleca flagi pod cella:
CFLAGS="-O2 -pipe -mcpu=970 -mabi=altivec"
w przypadku gcc >= 4.4.0
CFLAGS="-O2 -pipe -mcpu=cell -mabi=altivec"

Nie ma to jak zainstalować jednorodny i całkowicie spójny system.
Ręczne rzeźbienie to tylko w przypadku osób, które mają wystarczającą wiedzę i doświadczenie.
Powinno to się robić wykorzystując (debianowy) system budowania paczek, a już napewno nakładać wymagane patche.

Wczoraj miałem styczność z debianem praktycznie pierwszy raz. Muszę przyznać, że to zacna dystrybucja.
Tytuł: Odp: Cross kompilacja
Wiadomość wysłana przez: Troll81 w 18 Październik 2010, 16:44
PS3 ma procek powerPC do normalnego działania i cell do grafiki jesli dobrze pamiętam. Procki cell to coś jak CUDA :D i da sie PS3 wykorzystywać utylizując oba proce :D
Tytuł: Odp: Cross kompilacja
Wiadomość wysłana przez: buninek w 18 Październik 2010, 19:14
Wydaje mi się, że taka dystrybucja jak YDL różni się od debianowego wydania powerpc, specjalnym bootloaderem, ker
nelem, pełnym wsparciem pod układ graficzny i innymi "szczegółami".
Binaria zaś, zachowują zgodność pod względem arch.
Tytuł: Odp: Cross kompilacja
Wiadomość wysłana przez: sesef w 18 Październik 2010, 19:49
Cytat: buninek w 18 Październik 2010, 16:41w przypadku gcc >= 4.4.0
CFLAGS="-O2 -pipe -mcpu=cell -mabi=altivec"

Takie flagi to przy cross kompilacji? Bo jakoś kompilując z PPC nie widzę sensu dodawania -mcpu=cell
Tytuł: Odp: Cross kompilacja
Wiadomość wysłana przez: buninek w 18 Październik 2010, 20:32
Wrapper wymaga optymalizacji?

http://en.gentoo-wiki.com/wiki/Safe_Cflags/PowerPC (http://en.gentoo-wiki.com/wiki/Safe_Cflags/PowerPC)
To dotyczy zalecanych ustawień do gentoowego make.conf.

Jaką dystrybucję użytkownicy playstation instalują najczęściej?
YDL
Czy są budowane pod powerpc, czy też pod powerpc64?
Tytuł: Odp: Cross kompilacja
Wiadomość wysłana przez: sesef w 18 Październik 2010, 20:49
Optymalizacji nie wymaga, byleby się uruchomił i odpalił app liczący nic więcej od niego nie wymagam.

Z tego co się orientowałem instalują YDL albo Ubuntu PowerPC PS3
Tytuł: Odp: Cross kompilacja
Wiadomość wysłana przez: buninek w 18 Październik 2010, 20:56
Nie chcę już mieszać z uwagi na twoje dużo lepsze rozeznanie i wiedzę, bo faktycznie jeszcze wprowadzę w błąd.

http://www.yellowdoglinux.com/products/ydl/included/package_search.php (http://www.yellowdoglinux.com/products/ydl/included/package_search.php)
Rzeczywiście przeszukując te zasoby, to toolchain jest specjalistyczny, począwszy od binutils.
Jest binutils, ppu-binutils i spu-binutils, gcc, ppu-gcc, spu-gcc. ???

EDIT:
http://munckfish.net/blog/archive/2008/08/16/ubuntu-ps3-kernel-building/ (http://munckfish.net/blog/archive/2008/08/16/ubuntu-ps3-kernel-building/)
Krótki opis jak zinstalować spatchowany toolchain (PS3 Dev Team's) dla ubuntu do cross kompilacji.
Tytuł: Odp: Cross kompilacja
Wiadomość wysłana przez: TJM w 21 Październik 2010, 12:06
Przede wszystkim przy kompilacji wrappera nie należy się przejmować takimi rzeczami jak libcurl czy parę innych zależności. Configure --disable-client --disable-manager buduje serwer i biblioteki, odpada od razu 90% rzeczy które trzeba najpierw zbudować dla pełnej kompilacji. Ponadto od jakiegoś czasu pomocnicze aplikacje są chyba wydzielone i być może teraz da się je kompilować bez kompilacji serwera.
Tytuł: Odp: Cross kompilacja
Wiadomość wysłana przez: sesef w 10 Listopad 2010, 22:50
Ostatecznie wystąpiłem o konto tutaj: http://gcc.gnu.org/wiki/CompileFarm

Przyda się nie tylko do kompilacji wrappera na inne platformy, ale również do sprawdzania optymalizacji na różnych prockach