.titleBar { margin-bottom: 5px!important; }

make und gcc auf der Box

Dieses Thema im Forum "Freetz" wurde erstellt von hermann72pb, 15 Nov. 2008.

  1. hermann72pb

    hermann72pb IPPF-Promi

    Registriert seit:
    6 Nov. 2005
    Beiträge:
    3,567
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    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
     
  2. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    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.
     
  3. hermann72pb

    hermann72pb IPPF-Promi

    Registriert seit:
    6 Nov. 2005
    Beiträge:
    3,567
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    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
     
  4. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    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.
     
  5. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,761
    Zustimmungen:
    5
    Punkte für Erfolge:
    38
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    So groß sollte der Aufwand eigentlich nicht sein. Im buildroot wird ein fürs Target lauffähiger Compiler erstellt...

    MfG Oliver
     
  6. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Prinzipiell bin ich der gleichen Meinung.
    Vielleicht ist mir damals auch nur die Geduld oder der SWAP-Bereich ausgegangen.
     
  7. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,761
    Zustimmungen:
    5
    Punkte für Erfolge:
    38
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    configure Skript für make ist durchgelaufen. Aber wie bau ich make auf der Box ohne make? :mrgreen:

    MfG Oliver
     
  8. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    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).
     
  9. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,761
    Zustimmungen:
    5
    Punkte für Erfolge:
    38
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Wieso ohne gcc und libc? Die sind schon da.

    MfG Oliver
     
  10. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    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?
     
  11. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,761
    Zustimmungen:
    5
    Punkte für Erfolge:
    38
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    #11 olistudent, 16 Nov. 2008
    Zuletzt bearbeitet: 16 Nov. 2008
    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
    
     
  12. hermann72pb

    hermann72pb IPPF-Promi

    Registriert seit:
    6 Nov. 2005
    Beiträge:
    3,567
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Das heißt es läuft? Wie gross ist das Ganze und was wird genau alles gebraucht??

    MfG