Results 1 to 15 of 15

Thread: CrossCompiling

  1. #1

    CrossCompiling

    hi,
    ich suche unterstützung beim cross-compilen von sourcen.
    es geht speziell um entware. eine ubuntu 11.10 umgebung habe ich bereits aufgesetzt, habe auch die fertige toolchain für x86 bereits heruntergeladen und den anweisungen entsprechend eingebunden. nun bin ich aber auf unterstützung angewiesen - ich würde doch gerne ein paar pakete kompilieren und anschließend auch der masse zur verfügung stellen (im moment besonders asterisk10).
    ist hier jemand im forum mit entsprechender erfahrung?

    gruß,
    astrakid

  2. #2
    Ich kompiliere meine Entware-Pakete so:

    http://code.google.com/p/wl500g-repo.../trunk/INSTALL

    wobei ich statt nur make dann

    Code:
    make .toolchain_installed
    make .buildroot_installed
    make .packages_prepared
    damit sollte die Umgebung dann vorbereitet sein

    die entsprechenden Pakete via

    Code:
    make -C "../openwrt_trunk" package/feeds/<feedname>/<packagename>/compile V=99
    make -C "../openwrt_trunk" package/feeds/<feedname>/<packagename>/install V=99
    bauen.

    Ich hoffe das hilft
    RT-N66U TomatoUSB 1.28.0000 MIPSR2-135 K26AC USB AIO-64K running Entware-NG
    pyload 0.4.9
    minidlna 1.1.2
    samba 3.6.5
    openvpn 2.3.10
    ̶W̶L̶5̶0̶0̶g̶P̶ ̶1̶.̶9̶.̶2̶.̶7̶-̶r̶t̶n̶-̶r̶4̶7̶5̶0 retired

  3. #3
    das hilft defintiv in 2 punkten:
    1. das make läuft schneller durch (vermute ich mal), weil nicht so viel kompiliert werden muss - das werde ich heute abend testen. bisher rödelt sich meine VM einen wolf...
    2. ich habe einen ansprechpartner, der erfahrung hat. ;-)

    meine nöchste frage ist nämlich, wie ich nun ein spezielles paket bauen kann.
    Beispiel: ich lade mir die aktuellsten sourcen von asterisk herunter. zum kompilieren gibt es 3 aktionen:
    a: ./configure
    b: make
    c: make install

    in teil a kann ich die notwendigen module angeben, die auch davon abhängig sind, welche module installiert sind (z.b. für fax benötigt man spandsp, was widerum libtiff voraussetzt).

    frage 1: wie kann ich diese sourcen manuell konfigurieren und dann mit der entware-toolchain kompilieren?
    frage 2: wie binde ich notwendige libraries ein (wie z.b. libtiff) und in welcher form (für das darunter liegende ubuntu oder muss ich libtiff auch erst für entware kompilieren)?

    gruß und danke,
    astrakid

  4. #4
    für eigene Pakete ist es wichtig, die Struktur zu verstehen, wie die Makefiles in OpenWrt aufgebaut sind

    http://wiki.openwrt.org/doc/devel/packages

    das make .packages_prepared patcht dann die Makefiles, dass aus allen /lib/blabla /opt/lib/blabla wird, weil wir unsere Pakete ja in /opt auf HDD/Stick legen und nicht in den Speicher wie bei OpenWrt (hier mal das Beispiel für curl http://code.google.com/p/wl500g-repo...fix-path.patch)

    also am besten mal ein makefile angucken wenn die patches drübergelaufen sind, du siehst dann schon, wie das so läuft

    auch wegen den Abhängigkeiten - libtiff z.B. würde dann vorher für Entware cross-kompiliert

    aktuelle firmware voll lly & theMiron benutzt ja, oder? ^die Pakete laufen nur mit den neueren uclibc versionen und dem 2.6er Kernel - soweit ich weiß


    hier ist der englische thread dazu: http://wl500g.info/showthread.php?28...7-rtn-firmware

    den russischen empfehl ich nur bedingt, da google translate doch etwas hakelig ist (vor allem muss ich hier dazu die Spracheinstellung für den Kyrillischen Zeichensatz umstellen, was nervt)
    http://wl500g.info/showthread.php?28...re-%F1-Optware
    Last edited by !gm; 17-09-2012 at 16:31.
    RT-N66U TomatoUSB 1.28.0000 MIPSR2-135 K26AC USB AIO-64K running Entware-NG
    pyload 0.4.9
    minidlna 1.1.2
    samba 3.6.5
    openvpn 2.3.10
    ̶W̶L̶5̶0̶0̶g̶P̶ ̶1̶.̶9̶.̶2̶.̶7̶-̶r̶t̶n̶-̶r̶4̶7̶5̶0 retired

  5. #5
    vielen dank für die unterstützung.

    hab es gerade mal stur nach anleitung probiert, hab natürlich eine fehlermeldung erhalten "no rule to make target"...
    aber erst mal noch einen schritt zurück, da mir gar nicht klar ist, wie ich cross-compile.

    1. ich habe nun eine toolchain installiert, die entware unterstützt => pakete, die ich mit dieser toolchain kompiliere, sind "krosskompiliert". ist das richtig?
    2. wenn ich sourcen habe (z.b. asterisk), dann kann ich stinknormal mein "./configure" ausführen und anschließend das "make" der entware-toolchain auf diese Sourcen loslassen, oder?
    3. wenn 2. stimmt, wie sieht der genaue befehl aus, also wie rufe ich das "toolchain-make" auf?

    sorry für die häufigen nachfragen, aber mir ist das noch nicht ganz klar, hab auch bisher nur direkt auf dem router kompiliert - das habe ich so halbwegs verstanden.

    gruß,
    astrakid

  6. #6
    Quote Originally Posted by astrakid View Post
    1. ich habe nun eine toolchain installiert, die entware unterstützt => pakete, die ich mit dieser toolchain kompiliere, sind "krosskompiliert". ist das richtig?
    ja, nach make .toolchain_installed im entware trunk

    Quote Originally Posted by astrakid View Post
    2. wenn ich sourcen habe (z.b. asterisk), dann kann ich stinknormal mein "./configure" ausführen und anschließend das "make" der entware-toolchain auf diese Sourcen loslassen, oder?
    nein configure usw. braucht du alles nicht, dass passiert automatisch, wenn das OpenWrt-makefile richtig ist

    Quote Originally Posted by astrakid View Post
    3. wenn 2. stimmt, wie sieht der genaue befehl aus, also wie rufe ich das "toolchain-make" auf?
    wie schon geschrieben...
    Code:
    make -C "../openwrt_trunk" package/feeds/<feedname>/<packagename>/compile V=99
    make -C "../openwrt_trunk" package/feeds/<feedname>/<packagename>/install V=99
    ^der Pfad geht vom entware trunk aus

    im Grunde müsstest du mal ein vorhandenes Paket kompilieren um zu sehen, wie das funktioniert... das target wird beim make .packages_prepared gesetzt, wenn ich das richtig in Erinnerung habe

    V=99 bedeutet maximale verbosity <-- viiiiel Ausgabe

    kein Problem - frag ruhig alles
    auf dem Router selbst dauert das alles viel zu lange außerdem haben wir kein buildroot - ipk Paket mehr, was die Einrichtung der Umgebung extrem verkomplizieren würde
    RT-N66U TomatoUSB 1.28.0000 MIPSR2-135 K26AC USB AIO-64K running Entware-NG
    pyload 0.4.9
    minidlna 1.1.2
    samba 3.6.5
    openvpn 2.3.10
    ̶W̶L̶5̶0̶0̶g̶P̶ ̶1̶.̶9̶.̶2̶.̶7̶-̶r̶t̶n̶-̶r̶4̶7̶5̶0 retired

  7. #7
    Quote Originally Posted by !gm View Post
    ja, nach make .toolchain_installed im entware trunk
    nein configure usw. braucht du alles nicht, dass passiert automatisch, wenn das OpenWrt-makefile richtig ist
    [...]
    im Grunde müsstest du mal ein vorhandenes Paket kompilieren um zu sehen, wie das funktioniert... das target wird beim make .packages_prepared gesetzt, wenn ich das richtig in Erinnerung habe
    V=99 bedeutet maximale verbosity <-- viiiiel Ausgabe
    kein Problem - frag ruhig alles
    auf dem Router selbst dauert das alles viel zu lange außerdem haben wir kein buildroot - ipk Paket mehr, was die Einrichtung der Umgebung extrem verkomplizieren würde
    hi,
    prima, das hilft wieder ein stückchen.
    nur das mit dem makefile passt mir nicht ganz. das Makefile ist ja genau so konfiguriert, dass dort alles definiert wird, was anschließend in kompilierten paketen landen soll.
    ich habe aber das problem, dass mir etwas in asterisk fehlt und ich daher asterisk manuell cross-kompilieren möchte, ohne vorhandenes makefile. das wird doch dann mittels ./configure erstellt und make menuconfig , oder nicht? ich muss im ./configure nur die toolchain angeben (über --target? oder --build?)...?

    kann jemand mein problem nachvollziehen?

    gruß,
    astrakid

    p.s.: auf jeden fall schon mal danke für eure mühen!!!

  8. #8
    nein, schau dir die Struktur der openwrt makefiles an, nur so geht das. Das makefile aus der asterisk source beinhaltet zwar n paar informationen, wird aber niemals mit der openwrt buildroot funktionieren.

    im openwrt makefile ist ein bereich, wo du deine configure optionen festlegst

    http://wiki.openwrt.org/doc/devel/packages
    RT-N66U TomatoUSB 1.28.0000 MIPSR2-135 K26AC USB AIO-64K running Entware-NG
    pyload 0.4.9
    minidlna 1.1.2
    samba 3.6.5
    openvpn 2.3.10
    ̶W̶L̶5̶0̶0̶g̶P̶ ̶1̶.̶9̶.̶2̶.̶7̶-̶r̶t̶n̶-̶r̶4̶7̶5̶0 retired

  9. #9
    ja, habs verstanden. ich habe nur das problem, das ich nciht weiß, wie das entsprechende package heißt... daher würde ich das gerne "komplett" manuell machen - aber das scheint nicht zu klappen...
    gibt es die möglichkeit, dass ich asterisk sourcden runterziehe, ./configure und make menuconfig starte, die optionen wähle, um mir dann das makefile anzuschauen und die optionen für den configure-optionen zu übernehmen?

    gruß und danke!!!
    astrakid

  10. #10
    Quote Originally Posted by astrakid View Post
    wie das entsprechende package heißt...
    ^na du musst dir schon selbst nen treffenden Namen festlegen...

    die sourcen kann der buildroot übrigends über nenn eigenen feed auch automatisch beziehen - nur eben ein MAKEFILE musst du selber schreiben. kein configure

    http://wiki.openwrt.org/doc/devel/feeds

    mit make menuconfig - klickst du dich tot.

    deswegen

    make -C "../openwrt_trunk" package/feeds/<feedname>/<packagename>/compile V=99 ...
    RT-N66U TomatoUSB 1.28.0000 MIPSR2-135 K26AC USB AIO-64K running Entware-NG
    pyload 0.4.9
    minidlna 1.1.2
    samba 3.6.5
    openvpn 2.3.10
    ̶W̶L̶5̶0̶0̶g̶P̶ ̶1̶.̶9̶.̶2̶.̶7̶-̶r̶t̶n̶-̶r̶4̶7̶5̶0 retired

  11. #11
    ok, ich habe verstanden...:
    - dass das package ein name für das zu erstellende paket ist - damit frei wählbar
    - über das makefile definiere ich, wie das package aussieht

    wie komme ich denn an die verfügbaren optionen heran, die ich im makefile angeben kann? finde ich das in der dokumentation der sourcen?

    konkret:
    mir fehlen aktuell 3 asterisk-funktionen:
    1. function group
    2. function group_count

    dann müsste ich ja "nur" diese beiden funktionen in der doku finden, die entsprechenden teile im makefile angeben. allerdings habe ich danach bereits gesucht (um festzustellen, warum ausgerechnet diese beiden funktionen nicht verfügbar sind), konnte aber nicht fündig werden...

    gruß,
    astrakid

  12. #12
    https://dev.openwrt.org/browser/pack...file?rev=28462

    vlt muss das als Buildasterisk18ModuleTemplate angestoßen werden...? ^da du nur die beiden funktionen haben willst, würd ich an deiner stelle bei asterisk 1.8 zu suchen, denn hier haben wir ja eine version des openwrt/entware makefiles schon fertig (viel anders wird das für Asterisk10 auch nicht aussehen)
    Last edited by !gm; 18-09-2012 at 14:35.
    RT-N66U TomatoUSB 1.28.0000 MIPSR2-135 K26AC USB AIO-64K running Entware-NG
    pyload 0.4.9
    minidlna 1.1.2
    samba 3.6.5
    openvpn 2.3.10
    ̶W̶L̶5̶0̶0̶g̶P̶ ̶1̶.̶9̶.̶2̶.̶7̶-̶r̶t̶n̶-̶r̶4̶7̶5̶0 retired

  13. #13
    im core, d.h. in der main-applikation? dann wundert es mich um so mehr, warum die funktion im aktuellen ipk nicht enthalten ist...?!?!

  14. #14
    ähm nee ich hab mich korrigiert aber in der funktion selbst steht, dass sie bestandteil des core ist - wahrscheinlich kann man das aber trotzdem nicht mitkompilieren
    RT-N66U TomatoUSB 1.28.0000 MIPSR2-135 K26AC USB AIO-64K running Entware-NG
    pyload 0.4.9
    minidlna 1.1.2
    samba 3.6.5
    openvpn 2.3.10
    ̶W̶L̶5̶0̶0̶g̶P̶ ̶1̶.̶9̶.̶2̶.̶7̶-̶r̶t̶n̶-̶r̶4̶7̶5̶0 retired

  15. #15
    oh je, ich merke schon, das ist nicht ganz so einfach... jetzt mach ich erst mal ein paar tage pause. vllt kümmere ich mich am wochenende nochmal darum...
    hab parallel auch noch probleme mit nem mysql unter entware - ich kriege die db nicht sauber installiert, weil er "hostname" nicht ausführen kann...
    ich werd bekloppt...

    gruß,
    astrakid

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •