Hallo! Ich bin auf der Suche nach einem ARM-Assembler-Kompiler für Linux. Ein einfaches Komandozeilentool wäre perfekt. Mit Google bekommt man leider viel zu viel, bzw. gar nichts. :-/ Vielleicht kann mir ja mal jemand einen Stoß in die richtige Richtung geben ... Gruß Jobst
Jobst M. schrieb: > Der gcc kann Assembler? Nö, der erzeugt Assembler-Code, weshalb man ihn als Assembler-Compiler bezeichnen kann, so wie andere dann Binärcode-Compiler sind. Ein Assembler hingegen kompiliert nichts mehr, der assembliert.
Auf der Seite war ich schon ein paar mal - da steht nichts von Assembler. Gruß Jobst
Okay - ich benötige ein ASM-to-HEX Konverter ... Gruß Jobst
Aber in der toolchain ist der Assembler doch dabei. Sonst hätte die Kette eine Lücke vor dem Linker...
Jobst M. schrieb: > Okay - ich benötige ein ASM-to-HEX Konverter ... oder eher Assembler=ASM-to-OBJ und einen OBJ-to-HEX? Beides in der tool chain dabei...
Jobst M. schrieb: > Der gcc kann Assembler? gcc steht schon lange nicht mehr für "GNU C-Compiler", sondern für "GNU compiler collection".
Klaus Wachtler schrieb: > oder eher Assembler=ASM-to-OBJ und einen OBJ-to-HEX? > Beides in der tool chain dabei... Schaue ich mir (noch)mal an ... Vielen Dank erstmal. Vielleicht kommen ja noch andere Vorschläge. Gruß Jobst
In Linux sind Tools wie Assembler und Linker als "bintools" zusammengefasst. Wenn man keinen Compiler braucht, dann besorgt man sich die bei GNU und installiert die über Sourcecode - fertige compilerfreie Pakete werden bei ARM nicht sehr häufig nachgefragt. Mit Compiler drin gibts eine aktuelle Version als freie Version bei Codesourcery. GnuARM ist ein bischen alt, könnte bei den Cortexen zu Problemen führen.
Klaus Wachtler schrieb: > gcc steht schon lange nicht mehr für "GNU C-Compiler", sondern > für "GNU compiler collection". Habe ich auch nie behauptet. Aber: The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, Ada, and Go Gruß Jobst
Mit der Toolchain geht assembler aber auch, selbst wenn es nicht außen drauf steht. Aus man gcc:
1 | Suffixes of source file names indicate the language and kind of processing to be |
2 | done: |
3 | |
4 | .c C source; preprocess, compile, assemble |
5 | .C C++ source; preprocess, compile, assemble |
6 | .cc C++ source; preprocess, compile, assemble |
7 | .cxx C++ source; preprocess, compile, assemble |
8 | .m Objective-C source; preprocess, compile, assemble |
9 | .i preprocessed C; compile, assemble |
10 | .ii preprocessed C++; compile, assemble |
11 | .s Assembler source; assemble |
12 | .S Assembler source; preprocess, assemble |
13 | .h Preprocessor file; not usually named on command line |
14 | |
15 | Files with other suffixes are passed to the linker. Common cases include: |
16 | |
17 | .o Object file |
18 | .a Archive file |
Jobst M. schrieb: > The GNU Compiler Collection includes front ends for C, C++, Objective-C, > Fortran, Java, Ada, and Go Jau, und diese Frontends erzeugen Zwischencode für den Rest des GCC, der wiederum Assemblercode erzeugt, der wiederum vom Assembler zu Binärcode umgesetzt wird. Dieser Assembler gehört nun aber tatsächlich formal nicht zu GCC, sondern eben zu den bintools. Die aber logischerweise Bestandteil vom Compilerpaketen wie GnuARM oder Codesourcery sind. Am einfachsten kommt man also an einen Assembler ran, in dem man sich ein solches Compilerpaket besorgt.
Mal 'ne ganz blöde Frage: ist der gcc für alle Prozessoren gleichzeitig?
Er hat verschiedene Architekturmodule im Codegenerator, von denen bei der Übersetzung einer bestimmten Version des Compilers (z.B. für ARM) eines ausgewählt wird. Diese Module sind aber Bestandteil der Quellcodedistribution. Bei Assembler ist das ähnlich. Jede compilierte Version des ähnlich aufgebauten Quellcodes davon verdaut nur eine Architkturfamilie.
Tobi schrieb: > Moin, > > nee ist er nicht Scheint so :-/ Dann werde ich mir wohl noch einen zweiten gcc auf den Rechner setzen ... Ich berichte, wie es weiter geht ... Gruß Jobst
A. K. schrieb: > bintools Eigentlich 'binutils'. Jobst M. schrieb: > The GNU Compiler Collection includes front ends for C, C++, Objective-C, > Fortran, Java, Ada, and Go GCC enthält nicht den Assembler, aber trotzdem kann man über ihn assemblieren, genauso wie er keinen Linker enthält, man aber trotzdem darüber linken kann. Assembler und Linker sind eben nicht Teil von GCC, müssen aber vorhanden sein, damit man GCC sinnvoll nutzen kann. Also sind die bei jeder Toolchain schon mit dabei.
Okay. Der aktuelle gcc setzt einen kompletten Umbau meines Systems voraus um diesen zu bauen. rpmseek findet keinen gcc dummguck ... das ist ja merkwürdig. Man kann danach browsen und wenn man ihn anklickt, kommt man wieder zur Suche ?? Das ist mir jetzt schon zu viel. Da schreibe ich mir lieber selber einen ... Gruß Jobst
Jobst M. schrieb: > rpmseek findet keinen gcc dummguck ... das ist ja merkwürdig. Jedenfalls keinen für ARM, wenn dein System nicht grad zufällig einen im Bauch haben sollte (was noch selten ist). > Man kann > danach browsen und wenn man ihn anklickt, kommt man wieder zur Suche ?? Vielleicht heisst er anders, aber wie immer er heisst, den so verbreiteten GCC für x86 oder amd64 wirst du nur dafür verwenden können, die gewünschten Binutils zu übersetzen. Nicht aber dazu, irgendwas für ARM zu übersetzen. Es könnte allerdings helfen, wenn man wüsste, was für eine Distro das überhaupt ist. Bis jetzt weiss ich dank der Erwähnung von rpmseek nur, welche es nicht sein kann. Ausserdem wäre da wie schon erwähnt Codesourcery lite. Nix übersetzen, nicht lang rpmsuchen, einfach installieren und arm-none-eabi-gcc aufrufen. Oder arm-none-eabi-as, wenn es dir nach dem Assembler in Reinform gelüstet.
Jobst M. schrieb: > Okay. Der aktuelle gcc setzt einen kompletten Umbau meines Systems > voraus um diesen zu bauen. Was ist das denn für ein komisches System? Ich habe schon viele GCCs gebaut und wüßte nicht, warum man da irgendwas am System umbauen müßte. Abgesehen davon: Wenn du eh nur einen Assembler brauchst, warum willst du dann überhaupt einen GCC bauen? Wie gesagt: Assembler und Linker sind nicht Teil des GCC, sondern der binutils. Die kann man auch ohne GCC benutzen.
Das ist ein Mandriva 2009.0 Den gcc zu kompilieren habe ich ja nun auch schon gekippt. Allerdings bereiten mir die binutils auch gewisse Probleme. Ich habe das Komplettpaket gebaut - lief auch anstandslos durch. Aber zu ARM lässt sich das Ding nicht aus ... Wie muss ich den gas aufrufen? Gruß Jobst
Um nicht den hauseigenen Assembler, Compiler, Linker etc. für das eigene Systeme aufzurufen, haben die Programme meist die Architektur davorgesetzt, also statt gcc avr-gcc für den gcc, der AVR-Code erzeugt, arm-gcc für den, der ARM erzeugt, u.s.w.. Wenn du also nicht nur gebaut hast, sondern auch installiert, wäre arm-gas oder arm-as ein guter Ansatz... Auf einem Rechner hier mit der ARM-toolchain sind das die aufrufbaren Programme, die mit arm- beginnen:
1 | arm-920t-linux-gnu-addr2line arm-920t-linux-gnu-run |
2 | arm-920t-linux-gnu-ar arm-920t-linux-gnu-size |
3 | arm-920t-linux-gnu-as arm-920t-linux-gnu-strings |
4 | arm-920t-linux-gnu-c++ arm-920t-linux-gnu-strip |
5 | arm-920t-linux-gnu-c++filt arm-elf-addr2line |
6 | arm-920t-linux-gnu-cpp arm-elf-ar |
7 | arm-920t-linux-gnu-g++ arm-elf-as |
8 | arm-920t-linux-gnu-gcc arm-elf-c++filt |
9 | arm-920t-linux-gnu-gcc-3.4.5 arm-elf-gasp |
10 | arm-920t-linux-gnu-gccbug arm-elf-gcc |
11 | arm-920t-linux-gnu-gcov arm-elf-gdb |
12 | arm-920t-linux-gnu-gdb arm-elf-ld |
13 | arm-920t-linux-gnu-gdbtui arm-elf-nm |
14 | arm-920t-linux-gnu-gprof arm-elf-objcopy |
15 | arm-920t-linux-gnu-ld arm-elf-objdump |
16 | arm-920t-linux-gnu-nm arm-elf-ranlib |
17 | arm-920t-linux-gnu-objcopy arm-elf-run |
18 | arm-920t-linux-gnu-objdump arm-elf-size |
19 | arm-920t-linux-gnu-ranlib arm-elf-strings |
20 | arm-920t-linux-gnu-readelf arm-elf-strip |
Vielleicht hilft dir das die Suche.
Um hier mal sicher zu gehen: Du hast es auch für_ _ARM gebaut?
Klaus Wachtler schrieb: > Wenn du also nicht nur gebaut hast, sondern auch installiert, > wäre arm-gas oder arm-as ein guter Ansatz... Halt das, was er beim configure als target angegeben hat.
Seufz ... Also gut - ich dachte, ich reiche mit dem Bau hin ... Eigentlich wollte ich die vorhandenen binutils nicht überschreiben, da dann evtl. der gcc damit rumzickt. Aber die binutils habe ich ja noch als Paket da ... Also los ... [root@tube binutils-2.21]# make install ... nö ... kein arm-as, kein arm-gas, kein arm[garnüscht] nur den as
Klaus Wachtler schrieb: > Tja, wenn man wüsste, was er gemacht hat... Jobst M. schrieb: > Also gut - ich dachte, ich reiche mit dem Bau hin ... so genau wollten wir es gar nicht wissen, wie du "gebaut" hast :-)
Jobst M. schrieb: > Eigentlich wollte ich die vorhandenen binutils nicht überschreiben, da > dann evtl. der gcc damit rumzickt. Brauchst du ja auch nicht. Wenn du die für ARM gebaut hast, haben die ja eh einen anderen Namen. Außerdem installiert man sich die natürlich in ein anderes Verzeichnis (ich würde was wie /opt/my-arm oder so wählen). > Also los ... > > [root@tube binutils-2.21]# make install > > ... nö ... kein arm-as, kein arm-gas, kein arm[garnüscht] Was hast du denn nun als target angegeben beim configure? Einfach nur arm?
Klaus Wachtler schrieb: > Tja, wenn man wüsste, was er gemacht hat... ich habe ihm einfach ein ./configure gegeben - was offensichtlich wohl falsch war ... Ich ging davon aus, daß er mir dann alles baut ... also nochmal ... gnnnnn Wo finde ich denn, wie ich den Arm dort einbaue? ./configure --help hilft nicht weiter ... Gruß Jobst
Rolf Magnus schrieb: > Einfach nur arm? Endet mit *** BFD does not support target arm-unknown-none. Gruß Jobst
Hier meine Skripte um GCC für ARM7 zu bauen, target ist arm-elf. Für andere ARM Versionen sind evtl. Anpassungen nötig (es wäre schön gewesen, wenn du etwas präziser schreiben würdest, für welche ARM-Variante du das brauchst, welches Linux du hast, ...). Wobei das für den Assembler wohl eher unkritisch ist, dafür reicht wie schon gesagt das binutils-Paket. Die Versionen sind auch nicht ganz aktuell. Da mußt du dich halt mal selbst ein bißchen schlau machen, und ein bißchen strukturierter vorgehen, sonst wird das nichts.
Jürgen schrieb: > target ist arm-elf. Ich weiß derzeit noch gar nicht, ob elf mich weiter bringt ... Jürgen schrieb: > welche ARM-Variante du das brauchst, welches Linux du hast 1.) Noch nicht festgelegt 2.) Jobst M. schrieb: > Das ist ein Mandriva 2009.0 Hiermit scheint es nun geklappt zu haben: ./configure --target=arm-none-eabi Damit werde ich nun erst mal herumspielen ... Die Optionen des Assemblers bieten ja auch noch einige Fallen ... Zunächst einmal vielen Dank an alle! Gruß Jobst
Hi, anbei mal ein minimales Beispiel für den arm-elf-gcc, welcher so gebaut wurde: http://bb.osmocom.org/trac/wiki/GnuArmToolchain Steve
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.