Für Dingux kompilieren
-
Ich weiß nicht, ob jemand das hier kennt: http://de.wikipedia.org/wiki/Dingoo.
Auf jeden Fall gibt es für das Gerät seit kurzem auch ein Linux, genannt Dingux. Und ich wollte mal gucken, in wie weit sich bereits fertige Anwendungen dafür kompilieren lassen oder ob man Quellcodes da großartig ändern muß. Allerdings komm ich überhaupt nicht weiter und ich habe auch noch kein Tutorial gefunden, das mal erklärt, wie man von einem PC aus Anwendungen für Dingux kompiliert. Es heißt, man solle sich die Toolchain herunterladen. Die gibt's auf http://code.google.com/p/dingoo-linux/downloads/list.
O.k., ich hab das Teil ("dingux_toolchain_20091022.tar.bz2") also runtergeladen und entpackt. Aber ich weiß überhaupt nicht, was ich jetzt damit machen soll. Da sind weder Exe-Dateien drin, um unter Windows zu kompilieren, noch Quellcodes, um sich den Compiler für Dingux selbst zu erstellen. Da gibt's zwar eine Datei namens "gcc", aber wofür ist die? Ist das die Datei, mit der man in Dingux Programme kompiliert? Das nützt mir leider nichts, da ich noch keinen Dingoo habe und erstmal nur ausprobieren wollte, wie der Compiler überhaupt auf diverse Quellcodes reagiert. (Und selbst wenn ich einen Dingoo hätte, würde ich am PC kompilieren wollen, um am Ende nur noch die fertige ausführbare Datei auf den Dingoo rüberzuschieben.) Oder ist das eine ausführbare Datei für ein PC-Linux? Schwer vorstellbar, wo ausführbare Dateien einer Distribution ja nichtmal auf einer anderen Distributionen laufen.
Also was muß ich da machen, um für den Anfang mal eine simple Hello World-Anwendung für Dingux zu kompilieren? Hat da jemand eine Idee?
-
Die Toolchain ist nur für Linux. Du könntest versuchen diese mit cygwin unter Windows zu compilieren (alles nötige ist in dem buildroot Archiv), aber das ist meistens nicht ohne Probleme.
-
Jetzt seh ich's auch: Die Teile können ganz normal unter Linux gestartet werden.
Wie ist es einerseits möglich, allgemeine ausführbare Dateien für Linux zu haben, aber andererseits konnte ich vor einer Weile nichtmal ein unter Suse Linux kompiliertes Programm auf Knoppix ausführen? Und wieso gibt es im Internet bei Downloads für Linux immer nur die Quellcodes von Programmen, wenn man die doch auch kompilieren kann und die dann auf jedem Linux laufen?
-
- Das Ausführen macht typischerweise nur wegen irgendwelcher fehlender Shared Libraries Schwierigkeiten oder in Härtefällen wegen inkompatibler Libc-Versionen. Das SuSE-Programm wäre unter Knoppix vmtl. auch lauffähig gewesen, wenn Du ein paar Libraries nachinstalliert hättest. (Manchmal brauchts auch nur ein paar Symlinks im Libdir.)
- Man kann Programme natürlich auch mit statischen Libraries vollgepackt kompilieren, so wie das bei kommerzieller Software häufig der Fall ist. Das ist aber eher eine unelegante Notlösung und sorgt für riesengroße Downloads.
- Die Binaries im bin-Verzeichnis der Dingux-Toolchain sind alle dynamisch gelinkt, mach am besten mal
ldd bin/*
, dann siehst Du wozu. - Im usr/bin-Verzeichnis gibts ein paar Binaries, die auch statisch gelinkt sind.
- "Nur die Quellcodes" gibts deswegen, weil sich ohnehin niemand für Binaries interessiert. Die installiert man nämlich per Paketmanager. Die Sourcen sind natürlich dennoch äußerst praktisch und auch für Distributoren bzw. deren Entwickler interessant.
-
da es nicht jedes Programm als Binary in fertig geschnürten Paketen für jede der -hundert verschiedenen linux-Distros gibt und geben kann, besteht - vor allem wenn man von den Trampelpfaden der meistbenutzten Programme abweichen will oder muß - öfters die Notwendigkeit, selbst zu compilieren.
Außerdem reicht es bei linux nicht immer, einfach die compilierten Binaries zu haben; oft gehören zu einer Installation noch Anpassungen und Veränderungen von Systemdateien, die man - falls es kein fertig geschnürtes Paket für die verwendete (oder zumindest eine ähnliche) Distro gibt - per Installskript oder im Einzelfall auch manuell erledigen muß. So man dann herausfindet, wie.
ganz so einfach ("wozu Quellcodes, gibt doch RPMs ...") ist die Sache eben in der Praxis doch nicht bei >hundert verschiedenen Distros
-
nman schrieb:
Das SuSE-Programm wäre unter Knoppix vmtl. auch lauffähig gewesen, wenn Du ein paar Libraries nachinstalliert hättest.
Dann hab ich da wohl irgendetwas falsch gemacht. Ist auch schon eine Weile her.
O.k., ich hab jetzt eine Kubuntu-Live-CD genommen und sie in VirtualPC laufen lassen (damit ich parallel mit Windows und Linux arbeiten kann und nicht ständig neustarten muß, außerdem kann ich mir so die Installation sparen, den Fortschritt aber trotzdem abspeichern). Dort hab ich nochmal die Toolchain runtergeladen, sie auf den Desktop gepackt und den bin-Pfad, wo die Compiler liegen, in die PATH-Variable eingetragen:
export PATH=$PATH:~/Desktop/mipsel-linux-uclibc/usr/bin/
Jetzt kann ich die Compiler auch aufrufen, ohne daß ich den Pfad angeben muß. Der Aufruf von
mipsel-linux-g++
liefert erwarungsgemäß die Ausgabe
mipsel-linux-g++: no input files
Soweit läuft also alles. Nun hab ich eine Quellcodedatei erstellt, in der nur das hier drinsteht:
int main() { }
Aber hier ist schon der erste Fehler:
mipsel-linux-g++ -o Test Test.cpp /home/ubuntu/Desktop/mipsel-linux-uclibc/usr/bin/../lib/gcc/mipsel-linux-uclibc/ 4.3.3/../../../../mipsel-linux-uclibc/bin/ld: crtl.o: No such file: No such file or directory collect2: ld returned 1 exit status
Und es stimmt: Es gibt keine Datei namens "crtl.o". Nur "crt1.o", "crti.o" und "crtn.o". Weiß einer, was ich jetzt machen muß?
-
Das hier könnte helfen:
sudo aptitude install libc6-dev
-
Nein, das hat leider nichts gebracht. Die Installation klappte, aber der Dingux-Compiler liefert immer noch denselben Fehler.
-
Ich habe das auf die Schnelle auch auf keinem meiner Rechner gefunden. Da wirst Du wohl in den Foren bzw. auf deren Mailingliste fragen müssen.
-
du machst cross-compiling, oder? dann brauchst du natürlich noch die libc6 für die Zielplattform...denn wie sonst soll der Linker checken das alle Funktionen auf der Zielplattform vorhanden sind?