Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
i386-linux-uclibc Toolchain
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
doedel
Guru
Guru


Joined: 05 Feb 2006
Posts: 565
Location: Denmark

PostPosted: Sat Nov 11, 2017 7:03 pm    Post subject: i386-linux-uclibc Toolchain Reply with quote

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...)
_________________
http://krumeltee.wordpress.com/ -> Linux, Microcontroller, ...
Back to top
View user's profile Send private message
musv
Advocate
Advocate


Joined: 01 Dec 2002
Posts: 3203
Location: de

PostPosted: Wed Nov 15, 2017 7:13 pm    Post subject: Re: i386-linux-uclibc Toolchain Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
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