Hallo, ich wollte eine neue Toolchain mit gcc 9.3 bauen. Dieses gleich mit den aktuellen binutils 2.34. Allerdings klappt das nicht. Siehe Dateianhängen. Habe folgendes über Kreuz getestet. gcc 9.3 mit binutils 2.34 > nicht okay gcc 9.3 mit binutils 2.32 > okay gcc 9.2 mit binutils 2.32 > okay gcc 9.2 mit binutils 2.34 > nicht okay gcc 9.2 mit binutils 2.33.1 > okay gcc 9.3 mit binutils 2.33.1 > okay Daraus schließe ich das mit den binutils 2.34 etwas nicht stimmt. Aus der Doku kann ich auch nichts entnehmen das sich etwas in den Optionen geändert haben könnte. Gebaut wird mittels Ubuntu 18.04.4 LTS. Wenn man in der Konsolenausgabe etwas hochscrollt liest man diesen ersten Fehler. Makefile:12901: recipe for target 'install-strip-target-libgcc' failed make[1]: *** [install-strip-target-libgcc] Error 2 make[1]: Verzeichnis „/home/ubuntixer/toolchain/buildLinux/gcc“ wird verlassen Makefile:2475: recipe for target 'install-strip' failed make: *** [install-strip] Error 2 Kann mir jemand sagen wo es genau klemmt?
Hallo, habe dann mal mit gcc10 probiert. gcc10 will mit binutils 2.34 und 2.33.1 auch nicht. v2.32 ist nicht getestet. Bin dann die Konsolenausgabe nochmal durch, weil diesmal zwischendrin was rotes aufblitzte und habe 'flex' nachinstalliert. Bleibt am Ende aber auch wieder mit 'install-strip' Fehler stehen. Bin ratlos. (Logfile vom binutils Ordner gibts nicht)
Hallo, laut meiner Meinung gibts ein Problem mit der -strip Option. Entferne ich die Option im Script für binutils, kann ich eine Toolchain aus gcc10 und binutils 2.33.1 bauen. Das Endergebnis ist dann leider ca. doppelt so groß. Die Kombination gcc10 und binutils 2.34 gelingt aucn nicht nach dem entfernen der -strip Option zusätzlich für die avr-libs. Hat jemand einen Tipp?
Hallo, habe noch die Kombination gcc-10.0.1 mit binutils-2.32 getestet. Das kompiliert alles wie soll mit make install-strip. Damit ist eigentlich der Beweisführung zu Genüge getan das in den Neueren binutils irgendein Fehler steckt. Meine Frage wäre, ist das schon bekannt? Wird daran schon gearbeitet?
1 | |
Wobei mir gerade nicht ganz klar ist, ob das nun passiert, weil die Binutils kein "avr2" unterstützen, oder ob aus Versehen der Assembler des Hosts statt des Targets aufgerufen wird. Das sollte dir die Ausgabe eines "strace" sagen können.
Beitrag #6183222 wurde von einem Moderator gelöscht.
Gast
#6183225
Der Build hat doch schon viel früher Probleme, das Script ignoriert die aber und macht einfach weiter. Setzt mal zum -x auch noch -e.
Hallo, das strace Logfile mit Option -f ist 5GByte groß. Habs ohne -f und mit set -e wiederholt.
Veit D. schrieb: > Habs ohne -f und mit set -e wiederholt. Das bringt nichts. Du musst es mit -f laufen lassen, und dich schon mal selbst durchwühlen um rauszufinden, welchen Assembler er da aufruft. Suche nach "/as" sollte gar nicht so viele Treffer haben, kannst ja von hinten rückwärts suchen.
Hallo, ich versuche das einmal ... Wenn ich das richtig überblicke gehts in der Konsolenausgabe schon in Zeile 3558 los beim betreten von „/home/ubuntixer/toolchain/buildLinux/gcc/avr/libgcc“
Hallo, habs mit > grep -C 2 "/as" xxx.log >> xxx.txt gefiltert, ergibt 57MB, gepackt 3,2MB. Ich glaube das kann ich Euch zumuten. https://www.dropbox.com/s/3vnhlamqpnaj1rl/Konsolenlog_2Zeilen.zip?dl=0 Ich kann mit dem Inhalt nichts anfangen, außer das ich sehe das immer "No such file or directory" ausgegeben wird.
Hast du denn mal versucht, darin nach dem String "/as" zu suchen? Ich vermute nämlich, dass er "/usr/bin/as" benutzt, obwohl er "<...>/avr/bin/as" benutzen sollte. Wenn dem so ist, dann wäre es kein Wunder, dass /usr/bin/as kein -mmcu=avr2 mag. Sollte er wirklich den AVR-Assembler rufen, und der beklagt sich darüber, dann hieße das, dass in den aktuellen Binutils irgendwas daneben ist und (mindestens) avr2 nicht mehr unterstützt ist.
Gast
#6183683
Die letzten 28 Zeilen der Datei KonsolenLog2.txt
************************************************
execve("/usr/local/sbin/as", ["as", "-mmcu=avr2", "-o", "/t ...
________^^^^^^^^^^^^^^^^^^
Hallo, das "/as" Filterergebnis steht in dem gepackten Logfile. Das sind die ersten Zeilen in notepad++ gefiltert. Sind 168617 Treffer. Heute Abend kann ich weiter machen.
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 | |
Hallo, soll ich nochmal was speziell filtern? Oder sind die Informationen ausreichend? Oder was könnte ich noch machen?
Habe gerade mal die binutils-2.34 für AVR gebaut:
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 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
100 | |
101 | |
102 | |
103 | |
104 | |
105 | |
106 | |
107 | |
108 | |
109 | |
110 | |
111 | |
112 | |
113 | |
114 | |
115 | |
116 | |
117 | |
118 | |
119 | |
120 | |
121 | |
122 | |
123 | |
124 | |
125 | |
126 | |
127 | |
128 | |
129 | |
130 | |
131 | |
132 | |
133 | |
134 | |
135 | |
136 | |
137 | |
138 | |
139 | |
140 | |
141 | |
142 | |
143 | |
144 | |
145 | |
146 | |
147 | |
148 | |
149 | |
150 | |
151 | |
152 | |
"avr2" ist also definitiv noch in der Liste. Damit ist klar, dass der GCC bei dir irgendwie den falschen Assembler aufruft. Schau mal, ob dein $PATH korrekt ist und der installierte AVR-Assembler gestartet wird, wenn du ihn "avr-as" nennst. Es kann auch helfen, dass ${prefix}/bin vor den Systempfaden in $PATH liegt.
Hallo, ich habe gerade tausende Fragezeichen was ich machen soll. Mir stellt sich immer noch die Frage warum das mit v2.32 funktioniert und mit neuere Versionen nicht. Mal sehen was ich mit "avr-as" anfangen kann ...
Hallo, einen installierten avr habe ich nicht. Wenn ich dem "bauen" zuschaue, dann macht er was mit den avr-libc. + cd /home/ubuntixer/toolchain/downloads/avr-libc Nachdem alle avr Verzeichnisse erstellt sind, findet er ./config.guess nicht, host avr ist unknown und dann ist Ende checking for suffix of object files... configure: error: in `/home/ubuntixer/toolchain/buildLinux/avr-libc': configure: error: cannot compute suffix of object files: cannot compile
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 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
100 | |
101 | |
102 | |
103 | |
104 | |
105 | |
106 | |
107 | |
108 | |
109 | |
110 | |
111 | |
112 | |
113 | |
114 | |
115 | |
116 | |
117 | |
118 | |
119 | |
120 | |
121 | |
122 | |
123 | |
124 | |
125 | |
126 | |
127 | |
128 | |
129 | |
130 | |
131 | |
132 | |
133 | |
134 | |
135 | |
136 | |
137 | |
138 | |
139 | |
140 | |
141 | |
142 | |
143 | |
144 | |
145 | |
146 | |
147 | |
148 | |
149 | |
150 | |
151 | |
152 | |
153 | |
154 | |
155 | |
156 | |
157 | |
158 | |
159 | |
160 | |
161 | |
162 | |
163 | |
164 | |
165 | |
166 | |
167 | |
168 | |
169 | |
170 | |
171 | |
172 | |
173 | |
174 | |
175 | |
176 | |
177 | |
178 | |
179 | |
180 | |
181 | |
182 | |
183 | |
184 | |
185 | |
186 | |
187 | |
188 | |
189 | |
190 | |
191 | |
192 | |
193 | |
194 | |
195 | |
196 | |
197 | |
198 | |
199 | |
200 | |
201 | |
202 | |
203 | |
204 | |
205 | |
206 | |
207 | |
208 | |
209 | |
210 | |
211 | |
212 | |
213 | |
214 | |
215 | |
216 | |
217 | |
218 | |
219 | |
220 | |
221 | |
222 | |
223 | |
224 | |
225 | |
226 | |
227 | |
228 | |
229 | |
230 | |
231 | |
232 | |
233 | |
234 | |
235 | |
236 | |
237 | |
238 | |
239 | |
240 | |
241 | |
242 | |
243 | |
244 | |
245 | |
246 | |
247 | |
248 | |
249 | |
250 | |
251 | |
252 | |
253 | |
254 | |
255 | |
256 | |
257 | |
258 | |
259 | |
260 | |
261 | |
262 | |
263 | |
264 | |
265 | |
266 | |
267 | |
268 | |
269 | |
270 | |
271 | |
272 | |
273 | |
274 | |
275 | |
276 | |
277 | |
278 | |
279 | |
280 | |
281 | |
282 | |
283 | |
284 | |
285 | |
286 | |
287 | |
288 | |
289 | |
290 | |
291 | |
292 | |
293 | |
294 | |
295 | |
296 | |
297 | |
298 | |
299 | |
300 | |
301 | |
302 | |
Das hier kennst du aber, oder? https://nongnu.org/avr-libc/user-manual/install_tools.html
Hallo, die Seite kenne ich. Die avr Tools soll man unter Linux eigentlich nicht installieren, wenn man nur bauen möchte. Um genau den falschen Aufruf zu verhindern. Sonst baut der irgendwas und am Ende funktioniert die Toolchain nicht. Ich möchte die Toolchain unter Linux nur bauen damit ich eine für Windows habe. Ich möchte die Toolchain unter Linux nicht installieren.
Veit D. schrieb: > Ich möchte die Toolchain unter Linux nur bauen damit ich eine für > Windows habe. Öhem, achso. Das war mir entgangen. Also ein Crosscompiler mit einem Crosscompiler … Das habe ich allerdings auch noch nicht gemacht. Ich benutze MinGW als Crosscompiler bislang nur, um AVRDUDE für Windows unter FreeBSD zu bauen.
Hallo, ja sorry, ich dachte die Info wäre unwichtig, weil es um mein Script ging im Eingangsposting. Das ist das erste Script was laufen muss, danach würden noch 3 weitere folgen. Ich habe avr c/c++ Toolschain mit gcc 7 bis 9 damit gebaut, klappte immer alles. Ich fasse mal zusammen. Ich kann bis einschließlich gcc10 mit binutils 2.32 problemlos meine C/C++ Toolchain bauen. Ab 2.33.1 gibts Probleme. Du kannst aber mit binutils 2.34 deine Assembler Toolchain bauen? Richtig?
Veit D. schrieb: > Du kannst aber mit binutils 2.34 deine Assembler Toolchain bauen? Ja, allerdings native (also build host = execution host), und ich hatte dann noch nicht probiert, damit Compiler oder avr-libc zu bauen.
Hallo, falls du wirklich Langeweile hast, könntest du das einmal bei dir testen. :-) Ansonsten müßte ich mich an Nick Clifton wenden? Richtig? Bevor ich jetzt anfange mein Bau-System zu zerfetzen bzw. neu aufsetze, würde ich doch gern vorab fragen ob das Problem bekannt ist und ob überhaupt so getestet wurde. Nicht das ich mich Tagelang im Kreis drehe.
Veit D. schrieb: > falls du wirklich Langeweile hast, könntest du das einmal bei dir > testen. :-) Naja, ich würde dann wohl lieber mal paar Bugs in AVRDUDE schließen, um endlich mal ein neues Release rauszubringen. ;-) > Ansonsten müßte ich mich an Nick Clifton wenden? Richtig? Bin ich auch gerade nicht im Bilde. Wenn du einen Buildscript hast, mit dem andere das Problem reproduzieren können, und es sich auf genau diese binutils-Version eingrenzen lässt, kannst du allemal probieren, dort einen offiziellen Bugreport einzutüten. > Bevor ich jetzt anfange mein Bau-System zu zerfetzen bzw. neu aufsetze, > würde ich doch gern vorab fragen ob das Problem bekannt ist und ob > überhaupt so getestet wurde. Naja, derartige "Canadian Cross" Builds (bei denen build host, execution host und target alle verschieden sind) tendieren allgemein dazu, eher wenig getestet zu sein.
Hallo, alles klar, verstehe. :-)
> configure: error: cannot compute suffix of object files: cannot compile
Schau ins config.log, mit Sicherheit hast du Probleme mit Binutils.
Also sicherstellen, dass Binutils korrekt funktionieren bevor du mit gcc
oder avr-libc anfängst.
Was sind deine Build-Schritte in Prosa?
Hallo, das Script hängt am Eingangsthread dran. Ich zerlege das nochmal in alle 3 Teile ... Eins kann ich vorab aber schon sagen. Ich kann mir alle Toolchains mit binutils 2.32 bauen. Egal ob gcc 8.4, 9.3 oder 10. Nur mit 2.34 gibts besagte Probleme.
Hallo, gestartet mit gcc-10 von 15.03.20 und binutils 2.34 Script und Logfiles hängen dran.
Johann L. schrieb: > Prosa?
Gast
#6190796
> set -x > ... > JOBCOUNT=4 Wenn du den Build debuggen willst, wäre ein "set -e" und ein "JOBCOUNT=1" sinnvoller. Das Logfile ist ein heilloses Durcheinander mehrerer Prozesse ... Und check mal den makeinfo-Kram - entweder makeinfo installieren oder checken, warum er die neu bauen will (Timestamps überprüfen?).
Hallo, Prosa: Was möchtest du hören was nicht besser verständlich im Script steht? makeinfo installiert, -e und ein Prozessor geändert. Angehängte Dateien wie gehabt.
Gast
#6191287
Na geht doch ;-) Hatten die älteren Versionen wohl schon fertige texi-Files im Paket.
Hallo, meine Frage wäre ob nun jemand eine Möglichkeit sieht das Problem mit den binutils zu beheben oder nicht?
Gast
#6191892
> meine Frage wäre ob nun jemand eine Möglichkeit sieht das Problem mit > den binutils zu beheben oder nicht? ??? Noch eins? Der Build ist doch einwandfrei durchgelaufen. * verwirrt *
Hallo, upps, da hats mich selbst verwirrt vor lauter vorheriger Fehlermeldungen. Bin gerade am komplett bauen. Das heißt binutils ab v2.34 verlangt makeinfo (texinfo) zum bauen?
Veit D. schrieb: > Das heißt binutils ab v2.34 verlangt makeinfo (texinfo) zum bauen? Ist mir zumindest letztens auch aufgefallen. Habe aber nicht analysiert, warum sie die Doku neu bauen wollen, hab' einfach texinfo installiert.
Hallo, Danke, dann wäre das hiermit geklärt. War eine schwierige Geburt. :-) Danke @ all.
foobar schrieb: > Hatten die älteren Versionen wohl schon fertige texi-Files im Paket. Es ist ein Unterschied, ob man direkt von den Quellen generiet oder von einer releasten Version. Letzteres brauch weniger Tools und ist i.W. das Ergebnis von make dist. Direkt aus den git Quellen generieren benötigt mehr Tools, dito für GCC.
Naja, laut Beschreibung sei texinfo zum Bauen nur nötig, wenn man etwas selbst an der Doku ändern würde oder ein kaputtes Buildsystem hätte. So die Theorie - baue gerade eine Toolchain für ARM, auch dort gingen die aktuellen Binutils nicht ohne ein vorhandenes texinfo ab. War mir aber zu unwichtig erst zu recherchieren, was da nicht in Ordnung wäre.
Hallo, avr-libc ist der aktuell runtergeladene trunk. binutils und gcc sind die release Pakete. Alles in 3 Ordner entpackt/sortiert und dann gehts los.
Danke für den Krimi:) Vielleicht ist das für Veit hilfreich: in meinem Gentoo ebuild lässt sich der makeinfo schritt abschalten. Das wird durch
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
gelöst. Siehe https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-devel/binutils/binutils-2.34.ebuild Falls Du viel überflüssige Zeit hast (Dein cross-compile Problem hier zu lösen hat bestimmt auch Nerven gekostet), kannst du dir ja mal https://wiki.gentoo.org/wiki/Crossdev anschauen. Das ermöglicht sowas wie
1 | |
2 | |
um so eine Toolchain zu bauen. Alles mit den nötigen Abhängigkeiten. Oder einfach crossdev -t avr für eine native. Ich verschweige natürlich schamlos die Einarbeitungszeit, die zu erstellenden Scripte und die Tücken:P Viel Spass mit den nagelneuen Spielzeugen:) P.S.: Veit, kann man dein double cross setup irgendwo bewundern? ... die Neugier.
Hallo, die Scripte findest du hier und noch viel Hintergrundinformationen. Beitrag "cannot read spec file 'device-specs/specs-atmega4808'" 28.07.2019 00:37
Vielen Dank für die Kondensation deiner harten Arbeit in 53 Zeilen, Veit:)
Gast
#6202583
Danke an Veit ************* für die konstante Motivation. ich habe versucht das oben Beschriebene für mich zu nutzen, um eine gcc10_x64 toolchain zu bauen. es scheitert am fehlenden configure script im Download von svn co svn://svn.savannah.nongnu.org/avr-libc/trunk **********************************************************
A. B. schrieb: > svn co svn://svn.savannah.nongnu.org/avr-libc/trunk Wenn du den SVN-Stand der avr-libc nehmen willst, musst du dort den bootstrap-Script erstmal laufen lassen. Fertiges configure gibt es nur bei den Releases.
Hallo, startest du die Scripte in der falschen Reihenfolge? Erst die Linuxbuilds > binutils > gcc > avr-libs Danach die Windowsbuilds in gleichen Reihenfolge.
Hallo, weil das Toolchain bauen alleine noch nicht alles ist, habe ich mir .bat Dateien gebaut um fehlende Dateien aus dem Devicepack autoelektrisch in die Toolchain zu kopieren. Könnt gern vor der scharfen Anwendung noch die Option /L hinzufügen. :-) Falls sich jemand mit Batch Programmierung und der for Schleife auskennt, der könnte bitte zeigen wie man die Controllertypen in eine Art Array schreibt die dann abgearbeitet wird. Die langen Listen gefallen mir noch nicht wirklich. Deswegen sind die aufgeteilt um den Überblick zu behalten. Die Einzigste Handarbeit die übrig bleibt ist die io.h zubearbeiten. Für meine Ergänzungen ist die dabei.
Hallo, habe mir die aktuelle avr Toolchain mit gcc 10.1.0 gebaut. Jetzt werben die mit folgender Aussage:
1 | |
2 | |
Nur stimmt das doch so gar nicht? Ich komme da nicht mit. Die Device Spec Files sind vorhanden, aber der notwendige Rest nicht. Wenn ich in avr\include\avr nachschaue fehlen alle Headerdateien für die genannten Controller samt Einträge in die io.h. Warum? Wie muss man die Support Aussage verstehen? "64Bit Double" ist vorhanden. Ist das jetzt so schon für alle AVRs nutzbar? Der andere Thread dazu liest sich für mich anders, als wenn darauf noch gewartet werden müßte bis es final fertig ist und man es dann von Hand einbauen müßte.
Veit D. schrieb: > Jetzt werben die Wer "wirbt"? avr-libc ist kein Bestandteil des GCC.
Hallo, im Abschnitt AVR: https://gcc.gnu.org/gcc-10/changes.html werden besagte Controller als neu unterstützte Targets hervorgehoben. Wenn du sagst avr ist kein Bestandteil und die sagen die Controller werden unterstützt, dann verstehe ich aktuell gar nichts mehr. Betrachten wir den Fall gcc kennt avr gar nicht. Warum schreiben die dann etwas von Targetsupport?
Veit D. schrieb: > Wenn ich in avr\include\avr nachschaue fehlen alle Headerdateien für die > genannten Controller samt Einträge in die io.h. Weil Jörg W. schrieb: > avr-libc ist kein Bestandteil des GCC. Der Compiler kann (vermutlich) für die genannten Prozessoren Code erzeugen, die avrlibc kennt die aber nicht. Ist halt so, und überhaupt kein Widerspruch. Oliver
Veit D. schrieb: > Wenn du sagst avr ist kein Bestandteil Habe ich nicht geschrieben. Ein wenig genauer solltest du schon lesen, bevor du auf "die" schimpfst. Oliver hat die Sache korrekt dargestellt.
Hallo, wie soll ich denn das gelesene verstehen? Ich verstehe es immer noch nicht. Wie will denn der Compiler Code für die genannten Targets erzeugen wenn die Headerdateien fehlen? Hier sehe ich einen Widerspruch.
Veit D. schrieb: > Wie will denn der Compiler Code für die genannten Targets erzeugen wenn > die Headerdateien fehlen? Den Compiler interessieren die Headerdateien schlicht gar nicht. Der erzeugt Assemblercode dafür, dafür braucht er keine Bibliothek. (Lediglich für weitergehende Schritte wie eine C++-Bibliothek, die beim GCC mit dabei ist, würde dann auch eine C-Bibliothek benötigt. Daher muss man sowas in zwei Stufen bauen.) Der Compiler bringt noch ein paar Hilfsfunktionen in einer eigenen Bibliothek mit (libgcc.a), aber die haben keinen so direkten Hardwarebezug, dass man dafür schon eine C-Bibliothek bräuchte. Andersrum: die (avr-libc-)Bibliothek braucht, da sie zu einem großen Teil selbst in C geschrieben ist, unbedingt zuvor einen funktionierenden Compiler für das entsprechende Target. Wenn jetzt auch noch der Compiler von der Existenz einer Bibliothek abhängen würde, hätte man ein Henne-und-Ei-Problem.
Hallo, es wird schon heller. Nochmal zum mitmeißeln. :-) Der Targetsupport seitens gcc gilt nur für Assembler? C/C++ Programmierer benötigen die avr-libc? Noch anders gedacht. Wenn ich das Device-Package von Microchip zur Hand nehme bin ich auf den gcc Targetsupport nicht angewiesen, da ich alle benötigten Dateien aus dem Device-Package herausnehmen kann.
Veit D. schrieb: > Der Targetsupport seitens gcc gilt nur für Assembler? Genau genommen gilt er erstmal für den Compiler und die Fähigkeit, C- oder C++-Code in Assemblercode zu überführen. Einen passenden Assembler brauchst du zuvor, in Form der GNU binutils. Die sind die ersten, die ein neues Target immer erstmal unterstützen müssen. > C/C++ Programmierer benötigen die avr-libc? In aller Regel schon, wenngleich es natürlich sehr kleine Projekte geben könnte, die keinerlei Support durch die avr-libc benötigen. Dann müsstest du aber von A-Z alles selbst machen, was nicht der Compiler macht, also insbesondere auch deinen eigenen Startup-Code liefern. > Noch anders gedacht. Wenn ich das Device-Package von Microchip zur Hand > nehme bin ich auf den gcc Targetsupport nicht angewiesen, da ich alle > benötigten Dateien aus dem Device-Package herausnehmen kann. Die haben ihre device packages halt so aufgebaut, dass sie da alles drin haben.
Hallo, ich denke ich habs verstanden. Vielen Dank.
Veit D. schrieb: > habe mir die aktuelle avr Toolchain mit gcc 10.1.0 gebaut. > Jetzt werben die mit folgender Aussage: > > Support for the XMEGA-like devices [...] Das ist keine Webung sondern schlicht eine Beschreibung dessen, was sich von einer Compilerversion zur nächsten (ge)ändert (hat). Wie man es für jede enstzunehmende Software erwartet. Es bedeutet: Der Compiler unterstützt den jeweiligen Core (in allen Fällen "avrxmega3", was schon seit v8 der Fall ist) und der erzeugt specs-Files für die genannten Devices. That's it. Ohne Release Notes wäre der Compiler ein riesiges Nest voller Easter-Eggs; die per Zufall zu entdecken, oder die Quelle lesen zu müssen um zu erfahren was sich ändert, wär dir vermutlich auch nicht recht. Wie man's macht ist's falsch... Ob die avr-libc die Devices unterstützt musst du avr-libc gucken. Es gibt unterschiedliche Versionen von Patches für die Devices, die m.W. (noch) nicht eingebaut sind. http://savannah.nongnu.org/patch/?9543 Die avr-libc unterstützt ein bestimmtes Device wenn 1) Die abvr-libc das Device unterstützt 2) UND der Compiler das Device unterstützt, d.h. die entsprechende -mmcu Option akzeptiert. Falls nicht, lässt avr-libc configure das Device links liegen. > Wenn ich in avr\include\avr nachschaue fehlen alle Headerdateien für die > genannten Controller samt Einträge in die io.h. Warum? Wie muss man die > Support Aussage verstehen? Für Features von GCC liest du die GCC Release Notes, speziell für avr-gcc den Abschnitt "AVR" — sofern vorhanden: http://gcc.gnu.org/gcc-10/changes.html#avr Für Features der avr-libc liest du die avr-libc Release Notes. Falls du eine noch nicht releaste Revision verwendest wie SVN trunk, dann möchtest du auch ChangeLog(s) oder NEWS Datei lesen: http://svn.savannah.nongnu.org/viewvc/avr-libc/trunk/avr-libc/ > "64Bit Double" ist vorhanden. Ist das jetzt so schon für alle AVRs > nutzbar? avr-gcc: Ja. Wobei die avr-libc für Devices ohne MUL keine Funktionen implementiert, für welche Devices mit MUL diese Instruktion nutzen. Du bekommst dann eine "undefined reference" vom Linker und dein Projekt kann sie beisteuern. Für reduced Tiny fehlen alle Funktionen, mit entsprechenden Optionen erzeugt der Compiler allerding korrekten Code für 64-Bit (long) double so wie für andere Cores auch. Auch hier bist du darauf angewiesen, 64-Bit double Funktionen selber zu schreiben. Wie sinnvoll das für einen reduced Tiny ist sei dahingestellt. avr-libc: http://savannah.nongnu.org/bugs/?49567 http://savannah.nongnu.org/bugs/?57071 Ohne die Patches bekommst du falschen Code weil avr-libc die entsprechenden Multilib-Varianten nicht erzeugt, und weil die Funktionen falsch benannt sind, z.B. heißt sinf nicht "sinf" sondern "sin"; dito für alle anderen float-Funktionen. Bedeutet konkret, dass sin nur 32-Bit float liefert egal was du in die avr-libc reinfütterst (abgesehen von den obigen Patches natürlich :o) Du hast also 3 großflächige Patches anzuwenden. Spoiler: Weil einige Patches nicht mehr ganz taufrisch sind, gibt es (nicht-triviale) Konflikte.
Hallo, Danke, dass muss ich mir nochmal in Ruhe zu Gemüte führen.
Beitrag #6259786 wurde von einem Moderator gelöscht.
Beitrag #6259842 wurde von einem Moderator gelöscht.
Beitrag #6259851 wurde von einem Moderator gelöscht.
Beitrag #6259908 wurde von einem Moderator gelöscht.
Beitrag #6259913 wurde von einem Moderator gelöscht.
Beitrag #6260401 wurde von einem Moderator gelöscht.
Beitrag #6260431 wurde von einem Moderator gelöscht.
Hallo, habe meine Batchdateien nochmals überarbeitet, jetzt mit relativen Pfaden und nochmal leicht umgebaut. Für Atmegas und ATtinys getrennt. Header und Lib .bat müssen "zusammen" gestartet werden. Also wie folgt. Irgendwo einen Ordner erstellen zum Toolchain ergänzen. Da rein die .bat Dateien ohne weiteren Unterordner. Da rein die entpackten DevicePacks mit einem Unterordner. (in .zip umbennen, http://packs.download.atmel.com/) Da rein deine Toolchain mit einem Unterordner. Den Ordnernamen vom Devicepack und Toolchain ändert ihr in den .bat Dateien ab und könnt einen Testlauf starten. Ich nutze dafür robocopy, die Option /L ist aktiv. Wenn alles gut aussieht nehmt ihr die Optionen /L raus, dann ist das alles scharf geschalten. Ihr müsst immer nur die ersten 3 Zeilen je .bat anpassen. Am Ende müßt ihr aber noch die io.h anpassen und die Einträge machen. Dafür habe ich keine .bat Datei.
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 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
Das wars. Ich hoffe das erleichtert dem Einen oder Andere die Arbeit. :-)
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.