make und gcc auf der Box

hermann72pb

IPPF-Promi
Mitglied seit
6 Nov 2005
Beiträge
3,618
Punkte für Reaktionen
2
Punkte
38
Vor geräumter Zeit hat hier jemand die Idee ins Leben gerufen FREETZ (damals noch ds-mod) direkt auf der Box zu kompilieren. Damals waren diese Versuche eher als exotisch angesehen, heutzutage dagegen könnte man sich sowas schon vorstellen. Ich meine damit nicht unbedingt, dass man FREETZ komplett auf der Box kompilliert. Dafür ist die Box wahrscheinlich doch zu schwach, aber für Entwicklungszwecke wäre sowas schon vorstellbar. Mir schweben da zwei mögliche Szenarios vor:
1. Jemand will ein kleines C-Programm für die Box schreiben (von mir aus das verdammte "Hallo Welt!"). Sobald sein Programm gewisse Grenzen nicht übersteigt, wäre es vielleicht sinnvoll ein Compiler direkt auf der Box zu haben.
2. Es gibt ein Linux-Paket, welches noch keiner auf die Box portiert hat. man will es einfach mit beigefügten make-Files direkt auf der Box ausprobieren zu kompilieren.

Es gibt sicherlich noch weitere Anwendungsbeispiele.

Wie stelle ich mir es vor?
1. make, gcc und alles was man dazu braucht soll auf jeden Fall auf ein externes Medium ausgelagert werden.
2. Wenn dazu symlinks von /bin, /usr/bin usw. notwendig sind, dann sollte man es als Paket machen und mit external auslagern.
3. Wenn SWAP dazu dringend erforderlich ist, soll darauf hingewiesen werden.


Meine Fragen:
a) Hat jemand schon sowas versucht? Wie waren die Ergebnisse?
b) Spricht was grundsätzliches dagegen?
c) Wie sollte man vorgehen? Wo besorgt man gcc, make usw.? Was wird sonst gebraucht?

MfG
 

RalfFriedl

IPPF-Urgestein
Mitglied seit
22 Apr 2007
Beiträge
12,343
Punkte für Reaktionen
0
Punkte
0
Ich habe mal was in der Art versucht. Ich weiß aber nicht mehr genau, woran es gescheitert ist. Vielleicht war es auch nur zu langsam und hat zu viel Speicher gebraucht. Mit einer 7270 wären die Chancen vermutlich besser.
Vielleicht hatte ich auch nur nicht die richtigen Optionen zu Cross-Kompilieren erwischt, wobei es da ja nicht soviele Möglichkeiten gibt.

Meiner Meinung nach spricht nichts grundsätzliches dagegen.

Auf jeden Fall braucht man die ganzen Tools (make, binutils, gcc) in einer Version für die Box. Das sollte bei make und binutils kein größeres Problem sein, wir haben ja einen Cross-Compiler.

Bei gcc brauchen wir zuerst einen Compiler, der auf x86 läuft und Code für MIPS erstellt. den haben wir schon. dann müssen wir auf x86 einen Compiler erstellen, der auf MIPS läuft und Code für MIPS erstellt.

Außerdem brauchen wir alle Header-Files, angefangen mit denen des Kernels und der libc. Es kann auch sein, daß es mir an dieser Stelle zu kompliziert wurde.

Auf jeden Fall würde ich als externes Speichermedium NFS empfehlen und nicht USB. USB ist anscheinend nicht einmal bei der 7270 übermäßig schnell. Außerdem genug SWAP, auch über NFS, und vorzugsweise die 7270, sowohl wegen der CPU-Geschwindigkeit als auch wegen dem RAM.
 

hermann72pb

IPPF-Promi
Mitglied seit
6 Nov 2005
Beiträge
3,618
Punkte für Reaktionen
2
Punkte
38
Außerdem brauchen wir alle Header-Files, angefangen mit denen des Kernels und der libc. Es kann auch sein, daß es mir an dieser Stelle zu kompliziert wurde.
Das braucht man aber nicht, wenn man keine Treiber erstellt oder was am Kernel ändern will? Ich meine meine "Anwendung Nr.1", also einfaches "Hello Welt!" mit gcc auf der Box zu kompilieren.

Es ist schon klar, dass es nicht so einfach ist, sonst hätten wir es schon längst hier gehabt... Man könnte aber step-by-step anfangen. oder ist die Interesse zu gering?

MfG
 

RalfFriedl

IPPF-Urgestein
Mitglied seit
22 Apr 2007
Beiträge
12,343
Punkte für Reaktionen
0
Punkte
0
Vermutlich ist das Interesse gering.
Man braucht einen Teil der Kernel-Header für fast jedes nicht ganz triviale Programm. Sei es <sys/stat.h> oder <fcntl.h> oder verschiedene andere. Auch wenn man nur <stdio.h> verwendet, benötigt diese Datei letztlich auch irgendwelche Kernel-Funktionen.

Vielleicht war auch das Problem, daß die normalen Makefiles der libc die Header-Dateien nur im Rahmen eines normalen Builds erstellt haben. Andere Header-Dateien werden beim Build des gcc erstellt. Ein Build des gcc auf der Box benötigt aber die Libc, und ein Build der libc auf der Box braucht den gcc.

Ich bin sicher, daß es dafür eine Lösung gibt, aber nicht sicher, ob es den Aufwand wert ist.

Für Dein erstes Szenario (Hallo Welt) würde ich empfehlen, das Programm normal mit dem Cross-Compiler auf dem PC zu erstellen, und dann das Verzeichnis, in dem sich das Programm befindet, per NFS zu mounten. Der Vorteil ist, problemlose und schnelle Erstellung auf dem PC, einfache Ausführung ohne Kopieren direkt auf der Box.

Für Dein zweites Szenario, ein Paket direkt auf der Box zu erstellen, (wenn das Paket nicht zum Cross-Compilieren ausgelegt ist,) könnte ich mir vorstellen, daß es sinnvoll sein könnte, einen Compiler auf der Box zu haben.
 

olistudent

IPPF-Urgestein
Mitglied seit
19 Okt 2004
Beiträge
14,779
Punkte für Reaktionen
10
Punkte
38
So groß sollte der Aufwand eigentlich nicht sein. Im buildroot wird ein fürs Target lauffähiger Compiler erstellt...

MfG Oliver
 

olistudent

IPPF-Urgestein
Mitglied seit
19 Okt 2004
Beiträge
14,779
Punkte für Reaktionen
10
Punkte
38
configure Skript für make ist durchgelaufen. Aber wie bau ich make auf der Box ohne make? :mrgreen:

MfG Oliver
 

RalfFriedl

IPPF-Urgestein
Mitglied seit
22 Apr 2007
Beiträge
12,343
Punkte für Reaktionen
0
Punkte
0
Und ohne gcc und ohne libc, usw. Und die anderen brauchen auch einiges, inkl. make.

Ich bin sicher, daß es möglich ist, aber die Frage ist, ob sich die Mühe lohnt. Nachher hat man ein System, das auf der Box Programme erstellen kann, aber vielleicht 20 Mal solang braucht (die 20 ist nur geraten, kann auch schneller oder noch langsamer sein).
 

RalfFriedl

IPPF-Urgestein
Mitglied seit
22 Apr 2007
Beiträge
12,343
Punkte für Reaktionen
0
Punkte
0
In einer Form, die auf der Box läuft?

Wenn nur make fehlt, kann man make genau wie die anderen Programme auch auf dem PC erstellen. Oder unterstützt configure vom make keinen Cross-Compile?
 

olistudent

IPPF-Urgestein
Mitglied seit
19 Okt 2004
Beiträge
14,779
Punkte für Reaktionen
10
Punkte
38
Naja. Für größere Projekte könnte die ganze Sache schon zeitintensiv werden. :mrgreen:
Code:
/temp/empty-0.6.15b # CFLAGS="-Os"  time make
gcc -Os -Wall -lutil -o empty empty.c
real    0m 44.44s
user    0m 37.33s
sys     0m 2.69s
MfG Oliver

edit: Hm, man sollte vielleich nicht mit -Os kompilieren...
Code:
/temp/empty-0.6.15b # time make
gcc  -Wall -lutil -o empty empty.c
real    0m 15.98s
user    0m 10.77s
sys     0m 1.99s
 
Zuletzt bearbeitet:

hermann72pb

IPPF-Promi
Mitglied seit
6 Nov 2005
Beiträge
3,618
Punkte für Reaktionen
2
Punkte
38
Das heißt es läuft? Wie gross ist das Ganze und was wird genau alles gebraucht??

MfG
 

3CX PBX - GRATIS
Linux / Win / Cloud

Statistik des Forums

Themen
232,891
Beiträge
2,027,809
Mitglieder
351,017
Neuestes Mitglied
mucfaber