Hallo, ich habe heute auf einem Linux System die aktuelle msp-gcc Version aus sourcen erstellt - gemäß dieser Anleitung: http://sourceforge.net/apps/mediawiki/mspg/index.php?title=Install:fromsource Bei dem Versuch c Dateien damit zu kompilieren, kommt die Fehlermeldung: as: unrecognized option '-mcpu=430' Der aufgerufene assembler as kann also mit der Option -mcpu=430 nichts anfangen. Hätte der richtige assembler mit dem gcc mit installiert werden sollen? Bei der älteren Version von mspgcc (aus rpm installiert) gab es das Problem nicht. Oder sollte eigentlich msp430-as statt as aufegrufen werden (Was mich nur bedingt weiter bringen würde, da msp430-as auf meinem System auch nicht vorhanden ist)? Gruß, Jan
Gast
#2939872
Hi, Der link scheint defekt. Kannst du vielleicht dein Makefile bzw Compiler Aufruf anhängen?
Gast
#2939886
frag ihn doch was er gern hätte: msp-gcc --target-help
Gast
#2939890
tux_persönlich schrieb: > Der link scheint defekt. Ich hoffe jetzt gehts: http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=Install:fromsource Ich benutze eclipse, der Compileraufruf wenn ich die mmcu angebe ist: msp430-gcc -O0 -g3 -Wall -c -fmessage-length=0 -mmcu=msp430fg2452 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "../main.c" Und ohne mmcu, nur zum test: msp430-gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "../main.c" Gibt jedes mal den Fehler: as: unrecognized option '-mcpu=430' Selbst wenn ich mspgcc über die Kommanozeile mit minimale Optionen aufrufe, gibt es den gleichen Fehler: $msp430-gcc -o main main.c as: unrecognized option '-mcpu=430' >frag ihn doch was er gern hätte: msp-gcc --target-help Ansich scheint mir -mmcu=msp430fg2452 schon richtig zu sein, steht ja im Endefekt auch in dem verlinkte makefile. Die Fehlermeldung bezieht sich auf as (also auf den aufgerufenen Assembler und nicht gcc selbst) und auf -mcpu Danke, Jan
> as: unrecognized option '-mcpu=430'
Sollte das nicht eigentlich "msp430-as" heissen? Wenn der GCC die
binutils vom Host (i386/x86_64) benutzt, würde das diesen Fehler
erklären. Pack mal ein "-v" zu den Compiler Optionen dazu, dann zeigt er
an was er für Kommandos ausführt - auch welchen Assembler.
Jim Meba schrieb: Pack mal ein "-v" zu den Compiler Optionen dazu, dann zeigt er > an was er für Kommandos ausführt - auch welchen Assembler. Danke für den Tipp, folgendes ruft der msp430-gcc auf: COLLECT_GCC_OPTIONS='-v' '-o' 'main' '-mcpu=430' '-mmpy=none' '-mivcnt=16' as -mcpu=430 -o /tmp/ccvcidfT.o /tmp/cccSpNQD.s Allerdings kann ich msp430-as auch auf dem System nicht finden. Dann ist wohl das installieren der binutils schief gelaufen, oder woher sollte msp430-as kommen? Gruß, Jan
Etliche Versuche später gibt es neue Erkenntnisse und auch Fragen, aber leider kein Lösung: -Scheinbar ist das installieren der msp430-binutils gemäß oben erwähnter Anweisung schief gelaufen - und as gehört zu den binutils (sowohl make als auch make install lieferten Fehler zurück) -Ich konnte über yum die msp430-binutils installieren, allerdings nur in Version 2.19. Damit ist msp430-as installiert, aber in Version 2.19 werden wieder manche msp Typen nicht unterstüzt (und das war der Anlass für die ganze Aktion.) Nun zu den Fragen, vielleicht hat ja jemand eine ähnliche Konfiguration: -Sollte msp430-gcc-4.6.3 den msp430-as aufrufen, oder as -mcpu=430 -Und wo lässt sich das beeinflussen, da muß es doch irgendwelche config files für den gcc geben, oder? Gruß, Jan
Gast
#2943212
Hi, unabhängig der bisherigen Diskussion eine Anmerkung: Falls du Ubuntu benutzt kannst du ganz bequem die Toolchain via http://wiki.ubuntuusers.de/MSP430-Toolchain installieren. Damit läuft alles in 5min, Idiotensicher! ;) glgl hf
Cannabis_engineer schrieb: > Falls du Ubuntu benutzt kannst du ganz bequem die Toolchain > via http://wiki.ubuntuusers.de/MSP430-Toolchain installieren. schade, ich verwende Fedora 16. Und dafür gibt es in den normalen repositories nur msp430-gcc 3.x. Auch für das aktuelle Fedora 17 scheint das ähnlich zu sein! Außerdem ist alle halbe Jahr auf die neuere OS Version zu wechseln ja auch doof - bringt immer nur andere Probleme mit sich. Interessant wäre nochmal, wo definiert ist welchen assembler msp430-gcc mit welchen Optionen aufruft. Dann kriege ich das eventuell auch zu Fuß gelöst.
Gast
#2945969
Ich habe eben mal zum Spass die neue binutils-2.23.1 compiliert. Natürlich ohne Patch. Da ist alles wie es sein soll mit msp430-ar, msp430-as usw. Ohne jetzt den Patch der in deinem link angegeben ist zu analysieren vermute ich darin das Problem. also:
1 | |
2 | |
3 | |
4 | |
5 | |
Gast
#2946015
Hallo, der msp430-gcc ruft normalerweise dein msp430-as und auch alle anderen Programme mit diesem Prefix auf, also auch msp430-ld. Als Fallback werden dann eben die Tools ohne den Prefix "msp430-" benutzt. Also as, was bei bei einem x86 System leider nur den i386 usw. unterstützt. Ein "as -mcpu=430" bei einem x86 Host gibt es nicht.
Jan S. schrieb: > Interessant wäre nochmal, wo definiert ist welchen assembler msp430-gcc > mit welchen Optionen aufruft. Dann kriege ich das eventuell auch zu Fuß > gelöst. msp430-gcc -dumpspecs Interessant sind für dich: *asm *asm_debug *asm_final *asm_options und vor allem: *invoke_as Beachte aber, daß gcc den as aufruft und diesen im richtigen Verzeichnis erwartet, etwa in $install/$target/bin Wenn er dort nicht ist, liegt das i.d.R an einer fehlkonfigurierten Toolchain, oder daß beim Konfigurieren ein as bzw. eine Setup verwendet wurde, wie es in der Installation nicht mehr vorgefunden wird. Eine Möglichkeit, solchen Problemchen aus dem Weg zu gehen, ist GCC und Binutils mit gleichem --prefix zu konfigurieren und beides zusammen zu liefern. Den Systempfad kannst du mit -B erweitern, aber es sollte auch ohne gehen. Wie gcc den as aufruft siehst du mit -v. Ergebnis hängt davon ab, wo der "nächste" as gefunden wird.
Vielen Dank für die vielen Tipps. Also msp430-as ist jetzt vorhanden, da es funktioniert hat ein msp430-binutils Paket einer späteren fedora Version zu installieren. msp430-as -v ergibt folgendes: GNU assembler version 2.21.1 (msp430) using BFD version (GNU Binutils) 2.21.1 (mspgcc LTS 20120406 unpatched) Dürfte also ok sein. msp430-gcc -dumpspecs hat ergeben, daß unter der Direktive *invoke-as eben "as" steht und nicht "msp430-as". Habe den gesamten dump in eine Datei umgeleitet, as in msp430-as geändert und gcc diese Datei mittels -specs= verwenden lassen. Und siehe da, der Fehler hat sich verändert: /usr/bin/msp430-ld: cannot find crt0ivtbl16.o: No such file or directory /usr/bin/msp430-ld: cannot find -lgcc /usr/bin/msp430-ld: cannot find -lc /usr/bin/msp430-ld: cannot find -lgcc /usr/bin/msp430-ld: cannot find -lcrt0 Damit werde ich mich dann wohl morgen weiter befassen müssen, es reicht mir für heute. Danke für die bisherigen Antworten, Jan
Gast
#2947429
So habe mal bintutils und gcc gebaut. Ging Problemlos ... Folgender Patch fehlt in der Downloadliste http://sourceforge.net/projects/mspgcc/files/Patches/gcc-4.6.3/msp430-gcc-4.6.3-20120406.patch wird aber im "Build" angewendet. Output gcc -v
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
Den --prefix=/tmp habe ich genommen, damit auf meiner Ramdisk/tmpfs gebaut wird.
Das Ding ist in
/tmp/bin/msp430-gcc
> eingebaute Spezifikationen
Das versteht kein Schwanz...
Nimm --disable-nls
Gast
#2947690
>Den >--prefix=/tmp >habe ich genommen, damit auf meiner Ramdisk/tmpfs gebaut wird. .... und die Tools mit einem Shutdown rückstandsfrei entsorgt werden?
Gast
#2949911
@ Johann L. Ich wollte damit Jan S. nur sagen das die Anleitung funktioniert. --prefix kann auch mit anderen Werten benutzt werden. und wegen --disable-nls du kannst ja auch
1 | |
benutzen ;-) @ Fotos und Scans Ja war auch so gedacht ! Aktuell benutze ich keinen MSP430 sondern nur ARM und MIPS (Linux) Und ich möchte nicht das ich Tools außerhalb meiner Distro (Gentoo) installieren. Unter Gentoo mit kann man mit
1 | |
die Bintuils und den Crosscompiler bauen.
Hans Ulli Kroll schrieb: > Folgender Patch fehlt in der Downloadliste > http://sourceforge.net/projects/mspgcc/files/Patch... > wird aber im "Build" angewendet. > Also wenn ich das richtig sehe, ist der patch in dem Archiv mspgcc-20120406.tar.bz2 enthalten. den patch daraus habe ich zumindest angewendet. Ich habe msp430-gcc nochmal neu installiert, nachdem die binutils und damit msp430-as ja nun vorhanden sind. Trotzdem wird noch as statt masp430-as aufgerufen. Das läßt sich aber ja über die externe specfile beheben. Nun bleiben die Linkerprobleme, konkret:
1 | |
2 | |
3 | |
4 | |
-lc kam in den specs vor, habe es spaßeshalber mal entfernt, der Fehler bleibt aber. Was soll -lc den überhaupt sein? Eine Option für msp430-ld? Gruß, Jan
Gast
#2950744
>Was soll -lc den überhaupt sein? Eine Option für msp430-ld?
Was hältst Du davon, die GCC/Biinutils-Manuals zu lesen?
-lc ist die Anweisung an den Linker, die Library
libc.a zu linken.
Generell: -l<libname> heisst
eine Library mit dem Namen lib<libname>.a zu linken (etwas
abgedreht, ich weiss, stammt halt aus der Unix-Historie).
Mit -L<lib-dir> kannst Du ein Directory festlegen, in dem Libs
gesucht werden.
Eine (oder mehrere solcher) sollten eigentlich beim
Build des Compilers entstehen....
Bei mir gibt´s u.a. eine
./msp430/lib/libc.a oder eine
./msp430/lib/mcpu-430x/libc.a
Hast Du das Readme beim mpsp430 GCC beachtet? Sollte
eigentlich alles ohne krude Hacks funktionieren.
Fotos und Scans schrieb: > Sollte eigentlich alles ohne krude Hacks funktionieren. ACK. Insbesondere ist es nicht notwendig, die Specs zu hacken. Falls doch, liegt ein grundlegendes Problem vor: Tools sind falsch konfiguriert und / oder falsch installiert, etc.
Fotos und Scans schrieb: > Was hältst Du davon, die GCC/Biinutils-Manuals zu lesen? > -lc ist die Anweisung an den Linker, die Library > libc.a zu linken Ich hab in das man von ld geschaut, aber hab blöderweise nach -lc statt nach -l gesucht. Eigentlich dämlich, aber ich hab mich von den mehrbuchstabigen gcc Option die nur mit einem - beginnen irritieren lassen... Johann L. schrieb: >> Sollte eigentlich alles ohne krude Hacks funktionieren. > > ACK. Insbesondere ist es nicht notwendig, die Specs zu hacken. Falls > doch, liegt ein grundlegendes Problem vor: Tools sind falsch > konfiguriert und / oder falsch installiert, etc. Gut, dann sollte ich wohl nochmal von vorn anfangen. Mist, eigentlich wollte ich doch nur mal schnell ... Danke bis hier hin für die Geduld!
Bei configure macht GCC zentnerweise Ausgaben, die u.a. auch verraten, welche binutils er nimmt. Steht darin fast ganz oben. Schau also mal die configure-Ausgaben and bzw. das entsprechende config.log. Bei der installierten Tools kommt es auch darauf an, was in PATH gefunden wird. Werden gcc und binutils zusammen erzeugt, wird jedoch zuerst nach as gesucht, zB in ./$target/bin/as
Gast
#2952731
@ Jan S. von WO jast du den Compiler installiert ?? Du kannst diesen nicht aus dem Repo von Debian/Suse usw. nehmen ... Du must den Compiler mit den dir selber gebauten binutils bauen.
Gast
#2952754
Hier mal die wichtigen Ausgaben von "make binutils" (mit meinem --prefix=/tmp Der Vorteil von der richtigen Anwendung des --prefix du brauchst nicht root zu sein um funktionierende toolchain zu haben
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
Wie du siehst es darf kein Compiler erkannt werden Jetzt noch
1 | |
Gast
#2952784
So nun das gleiche mit gcc
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
Beachte hier die Ausgabe von den gefundenen binutils, da ich ja meine mit mit dem Prefix /tmp gebaut habe. Normalerweise wird eine Toolchain mit dem entsprechenden "Tupel" gebaut. Im msp30 Fall ist es wie du siehst msp430-unknown-none. Der Standard Ausruf von ./configure, wenn diese aks root instaliert werden sollen, ist :
1 | |
und
1 | |
Hans Ulli Kroll schrieb: > Hier mal die wichtigen Ausgaben von "make binutils" > [...] > Wie du siehst es darf kein Compiler erkannt werden Huh? Wieso das? Sollte doch nicht stören das, aber configure brabbelt eben viel... Hans Ulli Kroll schrieb: > Der Standard Ausruf von ./configure, wenn diese > als root instaliert Nicht, wenn man nicht root ist ;-) Zudem wird ./configure in GCC nicht unterstützt, d.h. configure innerhalb des Quellbaums. Falls man es doch gemacht hat, dann 1) Doku lesen 2) Quellen entsorgen 3) Quellen neu ziehen 4) Anwenden, was in 1) steht, also insbesondere kein configure im Quellverzeichnis.
Kaum macht man es richtig, schon geht es! Asche über mein Haupt, es haben schlicht und einfach Abhängigkeiten gefehlt. Eine Hilfreiche Liste dazu in dieser Anleitung: http://www.dconstructing.com/2012/02/22/compiling-for-msp430g2553-in-fedora Dadurch wurden die binutils nicht und der gcc falsch installiert. Mit den msp430-binutils als rpm hatte es ja auch nicht geklappt, ob dies an einer inkompatibilität zwischen dem binutils Paket und dem aus sourcen installiertem gcc lag, oder aber auch an nicht aufgelösten Abhängigkeiten habe ich icht mehr nachgeforscht. Jetzt ist auf jeden Fall alles manuell installiert (bis auf mspdebug) und funktioniert (gdb habe ich noch nicht getestet). Vielen Dank nochmal für Eure Hilfe, ich hab viel über gcc, die binutils und cross compiling gelernt. Übrigens steht in den specs von msp430-gcc interessanter weise immer noch nur as statt msp430-as bei *invoke_as. Jan
Gast
#2953943
Noch ein Link zu LFS, Linux from Scratch http://www.linuxfromscratch.org/lfs/ Dort wird das mit den bintuils und gcc nochmal erklärt. Sowie wie man es schafft eine Toolchain vom Hostsystem zu "lösen". Dazu ist auch dieses spec-File da. Die Suchpfade für die libs sind mit in dem Programmen compiliert.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.