Suche newbie Anleitung zum kompilieren von eigenen binarys

mandy28

Neuer User
Mitglied seit
15 Dez 2008
Beiträge
187
Punkte für Reaktionen
0
Punkte
16
Suche verständliche Anleitung für newbies.
Über das kompilieren von eigenen binarys für freetz
gegoogelt habe ich schon , aber mit der Kurzanletung auf freetz.org oder wehamorfun komme ich nicht wirklich weiter.

Eventuell hat ja jemand hier eine verständliche Anleitung zur Hand


greetz
 
Da in der Regel unter Linux Programme häufig mit der Kombination
./configure .....
make ....
gebaut werden, und im Wiki beschrieben steht, was du dort normalerweise einzugeben hast wäre es schon gut, wenn du sagst, welchen Punkt der Anleitung genau du denn nicht nachvollziehen konntest.


Jörg
 
@MaxMuster
ich suche eigentlich eine newbie Anleitung wo die einzelnen Schritte aufgezählt werden und was wohin kommt, was man braucht ect.

Nachdem die Toolchain heruntergeladen oder gebaut wurde, kann sie verwendet werden, um eigene Programme, oder solche, die noch nicht als Paket zur Verfügung stehen, zu übersetzen.

Den MIPS-Compiler zum Pfad hinzufügen:

export PATH=/pfad/zu/freetz/toolchain/target/bin:$PATH

Das mach im ordner mit den sourcen für die binary soweit klar

Optionen für ./configure:

./configure --build=i386-linux-gnu --target=mipsel-linux --host=mipsel-linux

soweit auch klar

aber was kommt dann , muß ich da nicht ein make file erstellen ??


Meinst Du mit eigenen binaries auch eigener Quellcode?
Nein nicht eigener Quellcode , ich meinte das allgemein um binarys aus sourcen die bekannt sind für freetz zu kompilieren
 
Zuletzt bearbeitet:
Wenn du im Verzeichnis das "./configure ...." erfolgreich durchgeführt hast, sollte (im gleichen Verzeichnis) ein "make" ausreichen (das "configure" erstellt das Makefile), eventuell ein "ziemlich vollständiges" make:
Code:
 make CC="mipsel-linux-gcc" CXX=mipsel-linux-g++  AR=mipsel-linux-uclibc-ar AS=mipsel-linux-uclibc-as LD=mipsel-linux-uclibc-ld  CFLAGS="-Os -static -pipe -march=4kc -Wa,--trap" ARCH=mips
was z.B. ein statisch gebautes Programm erstellen sollte...



Jörg
 
freetz@ubuntu:~/mcr$ export PATH=/home/freetz-trunk/toolchain/target/bin:$PATH
freetz@ubuntu:~/mcr$ ./configure --build=i386-linux-gnu --target=mipsel-linux --host=mipsel-linux
bash: ./configure: No such file or directory
freetz@ubuntu:~/mcr$
 
Der configure Aufruf funktioniert natürlich nur, wenn es ein configure Skript gibt. Vielleicht teilst du uns besser mit was genau du bauen willst... :)

MfG Oliver
 
Die Fehlermeldung ist doch ziemlich eindeutig. Entweder hast Du gar nicht ins Verzeichnis gewechselt, in dem sich configure befindet. Oder Du versuchst ein Programm zu übersetzen, welches gar kein configure hat. Dann musst Du schauen, ob es ein Makefile dafür gibt und dann gleich make aufrufen. Dabei musst Du eventuell die Variablen wie CC, CFLAGS, vielleicht auch noch andere überschreiben/setzen.

p.s. Oliver war schneller
 
Also gibt es kein "configure".
Schau, ob es ein Makefile gibt, ob das den Wert "CC" usw. respektiert (für den passenden Compiler) oder passe das Makefile entsprechend an. Dann sollte der oben genannte "lange" make-Aufruf was bringen.

Wenn es kein makefile gibt, musst du halt nach der Vorgabe des Programms die Programme selbst mit dem mipsel-Compiler übersetzen.

Natürlich gibt es hier nur "Anleitungen", wie die Besonderheiten von Freetz beim Compilieren zu berücksichtigen sind, keine allgemeinen Grundlagen, wie man denn generell Programme übersetzt...

Jörg

Edit: ... und ich war noch langsamer :-(
 
Oder um es noch deutlicher (und noch langsamer) zu sagen:
Allgemein kann die Frage nicht beantwortet werden, es kann bei jedem Programm anders sein. Bei vielen Programmen wird GNU autoconf verwendet, dann geht es mit dem Aufruf von configure.
Andere Programm verwenden unter Umständen auch ein configure Skript, das aber diese Parameter nicht akzeptiert. Oder es gibt gar kein configure Skript. In beiden Fällen mußt Du selbst herausfinden, was für das jeweilige Programm notwendig ist.
Und manche Programme sind überhaupt nicht für Cross-Compilieren ausgelegt.
 
Ich habe eigentlich genau dieselben Fragen, ich habe noch nie ein binary selbst erstellt und würde es gerne lernen. Wie kann ich denn z.B. die aktuelle busybox statisch für eine 7170 kompilieren? Freetz-Images bauen ist kein Problem, d.h. die Freetz-Build-Umgebung steht. Aber wie kompiliert man stand-alone und außerhalb von Freetz' "make menuconfig"?
 
Warum nimmst du nicht einfach die busybox aus Freetz? Mit "make busybox-menuconfig" kannst du sie konfigurieren. Mit "make busybox-precompiled" bauen und dann ist das Binary unter packages/target.../busybox.

MfG Oliver
 
Ich wusste nicht, dass es so einfach ist - vielen Dank für den Hinweis...
 
es geht um mcr-tool (siehe Anhang)
 

Anhänge

  • mcr-source1.tar
    121 KB · Aufrufe: 5
Sieht für mich aus als wäre das ein Tool mit grafischer Oberfläche (Qt) und wird daher nicht auf der Box laufen.

MfG Oliver
 
OK schade dachte da könnte man was machen.
Dann zu dem zweiten Versuch den ich mals zum üben versuchen möchte

mnidlna
ein Makefile ist dabei dafür kein configure


Code:
freetz@ubuntu:~/Desktop/minidlna$ make
./genconfig.sh
-e 
ERROR!  Cannot continue.
-e The following required libraries are either missing, or are missing development headers:

-e libavcodec libavformat libavutil libflac libvorbis libogg libid3tag libexif libjpeg libsqlite3 

make: *** [config.h] Fehler 1

schonmal Danke für Eure Tips
 

Anhänge

  • minidlna_1.0.18_src.tar
    760 KB · Aufrufe: 0
Zuletzt bearbeitet:
Normalerweise ist bei den Quellen auch eine Anleitung dabei, wie man sie übersetzt. Meistens wird dabei aber nicht auf das Cross-Compilieren eingegangen.

Auch das Programm, das Du jetzt ausgesucht hast, hat eine ganze Menge Abhängigkeiten. Bevor Du die ganzen genannten Libraries vorbereitet hast, brauchst Du mit dem Programm erst gar nicht anzufangen.
 
Die Libraries hätte ich ja , weiß aber nicht wo ich die reinpacken soll fürs kompilieren
Anleitung habe ich keine finden können

liegt der Fehler eventuell in der genconfig.sh :
Code:
# Detect if there are missing headers
# NOTE: This check only works with a normal distro
[ ! -e "[COLOR="Yellow"]/usr/include/[/COLOR]sqlite3.h" ] && MISSING="libsqlite3 $MISSING"
[ ! -e "/usr/include/jpeglib.h" ] && MISSING="libjpeg $MISSING"
[ ! -e "/usr/include/libexif/exif-loader.h" ] && MISSING="libexif $MISSING"
[ ! -e "/usr/include/id3tag.h" ] && MISSING="libid3tag $MISSING"
[ ! -e "/usr/include/ogg/ogg.h" ] && MISSING="libogg $MISSING"
[ ! -e "/usr/include/vorbis/codec.h" ] && MISSING="libvorbis $MISSING"
[ ! -e "/usr/include/FLAC/metadata.h" ] && MISSING="libflac $MISSING"
[ ! -e "/usr/include/ffmpeg/avutil.h" -a \
  ! -e "/usr/include/libavutil/avutil.h" -a \
  ! -e "/usr/include/ffmpeg/libavutil/avutil.h" ] && MISSING="libavutil $MISSING"
[ ! -e "/usr/include/ffmpeg/avformat.h" -a \
  ! -e "/usr/include/libavformat/avformat.h" -a \
  ! -e "/usr/include/ffmpeg/libavformat/avformat.h" ] && MISSING="libavformat $MISSING"
[ ! -e "/usr/include/ffmpeg/avcodec.h" -a \
  ! -e "/usr/include/libavcodec/avcodec.h" -a \
  ! -e "/usr/include/ffmpeg/libavcodec/avcodec.h" ] && MISSING="libavcodec $MISSING"
if [ -n "$MISSING" ]; then
	echo -e "\nERROR!  Cannot continue."
	echo -e "The following required libraries are either missing, or are missing development headers:\n"
	echo -e "$MISSING\n"
	exit 1

wie ersetze ich den Pfad "usr/include/ ? Da müßen ja die libs rein zum kompilieren wie ich das verstehel
 

Anhänge

  • libs.tgz
    2.3 KB · Aufrufe: 5
Zuletzt bearbeitet:
Wenn Du die Libraries schon hast, dann mußt Du noch dem Programm beibringen, sie auch zu verwenden.

So wie es aussieht, hast Du diese libs.tgz aus einen Thread, wo schon beschrieben ist, wie man minidlna erstellt.

Was soll dann also noch die Frage hier?
 
weil ich erstens , zuerts andere binary kompilieren wollte. Und zweitens es eben nicht beschrieben wird in den einen Thread, sondern man da nur Schnipsel auffangen kann.Auch ging es da um eine 7390und nicht für andere Fritzen. Auch habe ich jetzt minidlna genommen , weil es ja anscheinend damit funktioniert, nur wie erschließt sich leider nicht genau.

Wie das jetzt z.B. mit den libs läuft ect erschließt sich daraus noch nicht .
Da wird auch was angedeutet mit ffmpeg.mk und $(PKG)_CONFIGURE_DEFOPTS := n, sowie von einem patch.

Wie muß die ddmpeg.mk denn jetzt angepasst werden , und wo finde ich den Pfad "$(TARGET_TOOLCHAIN_STAGING_DIR)/usr/include/libavcodec*" ?

Und da hängt es wohl jetzt auch , nur was ist jetzt die Lösung ?
 
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.