View previous topic :: View next topic |
Author |
Message |
doedel Guru
Joined: 05 Feb 2006 Posts: 579 Location: Denmark
|
Posted: Sat Nov 11, 2017 7:03 pm Post subject: i386-linux-uclibc Toolchain |
|
|
Hi,
ich brauche für ein, mehr oder weniger, kleines Projekt eine Toolchain. Ich möchte für einen 486er ein Linux stricken, welches später auch auf einem 386er laufen sollte (<= diese Anforderung bringt die ganzen Probleme mit sich...).
Ich möchte die Build-Umgebung separat vom jeweiligen Host-Rechner haben und da drängt sich das Prinzip mit den Stages quasi von selbst auf.
Zuerst lud ich mir also eine experimental stage von 2008 ( stage3-x86-uclibc-2008.0.tar.bz2 ) herunter und versuchte diese einzurichten. Das wäre genau die Umgebung die ich brauche. Nur leider lässt sich da gar nicht emergen, da er erstmal was von Portage-Update sagt, aber das ist auch nicht möglich, da er was von Portage-Update sagt .... KreisKreisKreis ...
Also habe ich mir eine aktuelle i486 stage heruntergeladen und dort crossdev installiert. Es hat einige Anläufe gebraucht, bis crossdev durchlief. Das aber auch nur halb, beim letzten gcc-Durchlauf bricht er immer ab.
Ich musste etwas tricksen, so lief es dann durch, soweit, dass ich dann zumindest einen i386-linux-uclibc-gcc habe:
Code: | USE="-nptl" ACCEPT_KEYWORDS="~x86" crossdev -v --g 4.9.4 -t i386-linux-uclibc |
Das -nptl musste mit hin, da der erste Versuch abbrach, mit einer Meldung, die das auf nptl zurückführen liess.
Das Accept-Keywords musste mit, da ich nicht wusste/weiss, wie ich herausfinde, welche Packages ich demaskieren muss für crossdev.
Mit diesem Compiler habe ich nun einen 3.2.94 und einen 4.13.11 Kernel compilieren können, die beide ohne Probleme in einer 486er VM und meiner Testmaschine booten.
Ebenso ein Hello-World-Programm in C, welches ich dem Kernel als init mitgeben kann und er startet es.
Dann wollte ich busybox compilieren, das compilat bringt mir immer segfault mit dem i386-linux-uclibc compiler. Ob static oder shared libs.
Erst wenn ich den nativen i486-glibc-gcc die busybox bauen lasse, geht das (shared und static).
Das binary ist aber über doppelt so gross und 486er gebunden.
Wie sollte ich nun eurer Meinung nach weiter vorgehen?
Versuchen die 2008er stage auf einen aktuellen stand zu bringen?
Wie verwendet man crossdev problemlos?
Wie verifiziere ich eine Toolchain, ausser durch Trial+Error (Angst, dass die Errors erst in 6 Monaten auftauchen, wenn ich das System fertig habe und es um Anwendungen geht...) _________________ 1 ha == 1 Hekto-Ar == 1 Hektar |
|
Back to top |
|
|
musv Advocate
Joined: 01 Dec 2002 Posts: 3333 Location: de
|
Posted: Wed Nov 15, 2017 7:13 pm Post subject: Re: i386-linux-uclibc Toolchain |
|
|
doedel wrote: | Das binary ist aber über doppelt so gross und 486er gebunden. |
Was heißt denn 486er gebunden?
Kannst du nicht statt ulibc auch die glibc verwenden?
Was hast du als CFlags verwendet? Die bekommst du raus mit:
Code: | gcc -### -march=native -E /usr/include/stdlib.h 2>&1 | grep "/usr/libexec/gcc/.*cc1" |
Ansonsten musst du halt noch rausfinden, welche Unterschiede es bei den unterstützten CPU-Flags zwischen 386 und 486 gibt, d.h. /proc/cpuinfo, und da ggf. Flags bei den CFlags deaktivieren.
Ich hatte damals auf meinem Desktop-PC (Xeon) per chroot für meinen HTPC (Atom) compiliert. Der Xeon kannte den movbe-Befehl des Atom nicht. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|