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)
:
Bearbeitet durch User
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 | as: unrecognized option '-mmcu=avr2' |
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.
:
Bearbeitet durch Moderator
Beitrag #6183222 wurde vom Autor gelöscht.
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.
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 | 21516 stat("/usr/lib/gcc/x86_64-linux-gnu/7/as", 0x7fff9c89eb40) = -1 ENOENT (No such file or directory) |
2 | 21516 stat("/usr/lib/gcc/x86_64-linux-gnu/7/as", 0x7fff9c89eb40) = -1 ENOENT (No such file or directory) |
3 | 21516 stat("/usr/lib/gcc/x86_64-linux-gnu/as", 0x7fff9c89eb40) = -1 ENOENT (No such file or directory) |
4 | 21516 stat("/usr/lib/gcc/x86_64-linux-gnu/7/as", 0x7fff9c89eb40) = -1 ENOENT (No such file or directory) |
5 | 21516 stat("/usr/lib/gcc/x86_64-linux-gnu/as", 0x7fff9c89eb40) = -1 ENOENT (No such file or directory) |
6 | 21516 stat("/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/bin/x86_64-linux-gnu/7/as", 0x7fff9c89eb40) = -1 ENOENT (No such file or directory) |
7 | 21516 stat("/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/bin/x86_64-linux-gnu/as", 0x7fff9c89eb40) = -1 ENOENT (No such file or directory) |
8 | 21516 stat("/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/bin/as", 0x7fff9c89eb40) = -1 ENOENT (No such file or directory) |
9 | 21518 execve("/usr/local/sbin/as", ["as", "--64", "-o", "/tmp/cgXDQVBx/dummy.o", "/tmp/cc3NvgZl.s"], 0x267ad40 /* 72 vars */) = -1 ENOENT (No such file or directory) |
10 | 21518 execve("/usr/local/bin/as", ["as", "--64", "-o", "/tmp/cgXDQVBx/dummy.o", "/tmp/cc3NvgZl.s"], 0x267ad40 /* 72 vars */) = -1 ENOENT (No such file or directory) |
11 | 21518 execve("/usr/sbin/as", ["as", "--64", "-o", "/tmp/cgXDQVBx/dummy.o", "/tmp/cc3NvgZl.s"], 0x267ad40 /* 72 vars */) = -1 ENOENT (No such file or directory) |
12 | 21518 execve("/usr/bin/as", ["as", "--64", "-o", "/tmp/cgXDQVBx/dummy.o", "/tmp/cc3NvgZl.s"], 0x267ad40 /* 72 vars */ <unfinished ...> |
13 | 21584 stat("/usr/lib/gcc/x86_64-linux-gnu/7/as", 0x7fff499ab8e0) = -1 ENOENT (No such file or directory) |
14 | 21584 stat("/usr/lib/gcc/x86_64-linux-gnu/7/as", 0x7fff499ab8e0) = -1 ENOENT (No such file or directory) |
15 | 21584 stat("/usr/lib/gcc/x86_64-linux-gnu/as", 0x7fff499ab8e0) = -1 ENOENT (No such file or directory) |
16 | 21584 stat("/usr/lib/gcc/x86_64-linux-gnu/7/as", 0x7fff499ab8e0) = -1 ENOENT (No such file or directory) |
17 | 21584 stat("/usr/lib/gcc/x86_64-linux-gnu/as", 0x7fff499ab8e0) = -1 ENOENT (No such file or directory) |
18 | 21584 stat("/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/bin/x86_64-linux-gnu/7/as", 0x7fff499ab8e0) = -1 ENOENT (No such file or directory) |
19 | 21584 stat("/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/bin/x86_64-linux-gnu/as", 0x7fff499ab8e0) = -1 ENOENT (No such file or directory) |
20 | 21584 stat("/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/bin/as", 0x7fff499ab8e0) = -1 ENOENT (No such file or directory) |
21 | 21586 execve("/usr/local/sbin/as", ["as", "--64", "-o", "/tmp/ccaMmAdJ.o", "/tmp/ccLV76vG.s"], 0xcf9980 /* 73 vars */) = -1 ENOENT (No such file or directory) |
22 | 21586 execve("/usr/local/bin/as", ["as", "--64", "-o", "/tmp/ccaMmAdJ.o", "/tmp/ccLV76vG.s"], 0xcf9980 /* 73 vars */) = -1 ENOENT (No such file or directory) |
23 | 21586 execve("/usr/sbin/as", ["as", "--64", "-o", "/tmp/ccaMmAdJ.o", "/tmp/ccLV76vG.s"], 0xcf9980 /* 73 vars */) = -1 ENOENT (No such file or directory) |
24 | 21586 execve("/usr/bin/as", ["as", "--64", "-o", "/tmp/ccaMmAdJ.o", "/tmp/ccLV76vG.s"], 0xcf9980 /* 73 vars */ <unfinished ...> |
25 | 21591 stat("/usr/lib/gcc/x86_64-linux-gnu/7/as", 0x7ffe24806f40) = -1 ENOENT (No such file or directory) |
26 | 21591 stat("/usr/lib/gcc/x86_64-linux-gnu/7/as", 0x7ffe24806f40) = -1 ENOENT (No such file or directory) |
27 | 21591 stat("/usr/lib/gcc/x86_64-linux-gnu/as", 0x7ffe24806f40) = -1 ENOENT (No such file or directory) |
28 | 21591 stat("/usr/lib/gcc/x86_64-linux-gnu/7/as", 0x7ffe24806f40) = -1 ENOENT (No such file or directory) |
29 | 21591 stat("/usr/lib/gcc/x86_64-linux-gnu/as", 0x7ffe24806f40) = -1 ENOENT (No such file or directory) |
30 | 21591 stat("/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/bin/x86_64-linux-gnu/7/as", 0x7ffe24806f40) = -1 ENOENT (No such file or directory) |
31 | 21591 stat("/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/bin/x86_64-linux-gnu/as", 0x7ffe24806f40) = -1 ENOENT (No such file or directory) |
32 | 21591 stat("/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/bin/as", 0x7ffe24806f40) = -1 ENOENT (No such file or directory) |
33 | 21593 execve("/usr/local/sbin/as", ["as", "--64", "-o", "/tmp/ccP9GNba.o", "/tmp/cc85Za45.s"], 0xb0cb60 /* 73 vars */) = -1 ENOENT (No such file or directory) |
34 | 21593 execve("/usr/local/bin/as", ["as", "--64", "-o", "/tmp/ccP9GNba.o", "/tmp/cc85Za45.s"], 0xb0cb60 /* 73 vars */) = -1 ENOENT (No such file or directory) |
35 | 21593 execve("/usr/sbin/as", ["as", "--64", "-o", "/tmp/ccP9GNba.o", "/tmp/cc85Za45.s"], 0xb0cb60 /* 73 vars */) = -1 ENOENT (No such file or directory) |
36 | 21593 execve("/usr/bin/as", ["as", "--64", "-o", "/tmp/ccP9GNba.o", "/tmp/cc85Za45.s"], 0xb0cb60 /* 73 vars */ <unfinished ...> |
37 | 21600 stat("/usr/lib/gcc/x86_64-linux-gnu/7/as", 0x7ffd885dcac0) = -1 ENOENT (No such file or directory) |
38 | 21600 stat("/usr/lib/gcc/x86_64-linux-gnu/7/as", 0x7ffd885dcac0) = -1 ENOENT (No such file or directory) |
39 | 21600 stat("/usr/lib/gcc/x86_64-linux-gnu/as", 0x7ffd885dcac0) = -1 ENOENT (No such file or directory) |
40 | 21600 stat("/usr/lib/gcc/x86_64-linux-gnu/7/as", 0x7ffd885dcac0) = -1 ENOENT (No such file or directory) |
41 | 21600 stat("/usr/lib/gcc/x86_64-linux-gnu/as", 0x7ffd885dcac0) = -1 ENOENT (No such file or directory) |
42 | 21600 stat("/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/bin/x86_64-linux-gnu/7/as", 0x7ffd885dcac0) = -1 ENOENT (No such file or directory) |
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 | % ./gas/as-new --help |
2 | Usage: ./gas/as-new [option...] [asmfile...] |
3 | Options: |
4 | -a[sub-option...] turn on listings |
5 | Sub-options [default hls]: |
6 | c omit false conditionals |
7 | d omit debugging directives |
8 | g include general info |
9 | h include high-level source |
10 | l include assembly |
11 | m include macro expansions |
12 | n omit forms processing |
13 | s include symbols |
14 | =FILE list to FILE (must be last sub-option) |
15 | --alternate initially turn on alternate macro syntax |
16 | --compress-debug-sections[={none|zlib|zlib-gnu|zlib-gabi}] |
17 | compress DWARF debug sections using zlib |
18 | --nocompress-debug-sections |
19 | don't compress DWARF debug sections [default] |
20 | -D produce assembler debugging messages |
21 | --debug-prefix-map OLD=NEW |
22 | map OLD to NEW in debug information |
23 | --defsym SYM=VAL define symbol SYM to given value |
24 | --execstack require executable stack for this object |
25 | --noexecstack don't require executable stack for this object |
26 | --size-check=[error|warning] |
27 | ELF .size directive check (default --size-check=error) |
28 | --elf-stt-common=[no|yes] (default: no) |
29 | generate ELF common symbols with STT_COMMON type |
30 | --sectname-subst enable section name substitution sequences |
31 | --generate-missing-build-notes=[no|yes] (default: no) |
32 | generate GNU Build notes if none are present in the input |
33 | -f skip whitespace and comment preprocessing |
34 | -g --gen-debug generate debugging information |
35 | --gstabs generate STABS debugging information |
36 | --gstabs+ generate STABS debug info with GNU extensions |
37 | --gdwarf-2 generate DWARF2 debugging information |
38 | --gdwarf-sections generate per-function section names for DWARF line information |
39 | --hash-size=<value> set the hash table size close to <value> |
40 | --help show this message and exit |
41 | --target-help show target specific options |
42 | -I DIR add DIR to search list for .include directives |
43 | -J don't warn about signed overflow |
44 | -K warn when differences altered for long displacements |
45 | -L,--keep-locals keep local symbols (e.g. starting with `L') |
46 | -M,--mri assemble in MRI compatibility mode |
47 | --MD FILE write dependency information in FILE (default none) |
48 | -nocpp ignored |
49 | -no-pad-sections do not pad the end of sections to alignment boundaries |
50 | -o OBJFILE name the object-file output OBJFILE (default a.out) |
51 | -R fold data section into text section |
52 | --reduce-memory-overheads |
53 | prefer smaller memory use at the cost of longer |
54 | assembly times |
55 | --statistics print various measured statistics from execution |
56 | --strip-local-absolute strip local absolute symbols |
57 | --traditional-format Use same format as native assembler when possible |
58 | --version print assembler version number and exit |
59 | -W --no-warn suppress warnings |
60 | --warn don't suppress warnings |
61 | --fatal-warnings treat warnings as errors |
62 | -w ignored |
63 | -X ignored |
64 | -Z generate object file even after errors |
65 | --listing-lhs-width set the width in words of the output data column of |
66 | the listing |
67 | --listing-lhs-width2 set the width in words of the continuation lines |
68 | of the output data column; ignored if smaller than |
69 | the width of the first line |
70 | --listing-rhs-width set the max width in characters of the lines from |
71 | the source file |
72 | --listing-cont-lines set the maximum number of continuation lines used |
73 | for the output data column of the listing |
74 | @FILE read options from FILE |
75 | AVR Assembler options: |
76 | -mmcu=[avr-name] select microcontroller variant |
77 | [avr-name] can be: |
78 | avr1 - classic AVR core without data RAM |
79 | avr2 - classic AVR core with up to 8K program memory |
80 | avr25 - classic AVR core with up to 8K program memory |
81 | plus the MOVW instruction |
82 | avr3 - classic AVR core with up to 64K program memory |
83 | avr31 - classic AVR core with up to 128K program memory |
84 | avr35 - classic AVR core with up to 64K program memory |
85 | plus the MOVW instruction |
86 | avr4 - enhanced AVR core with up to 8K program memory |
87 | avr5 - enhanced AVR core with up to 64K program memory |
88 | avr51 - enhanced AVR core with up to 128K program memory |
89 | avr6 - enhanced AVR core with up to 256K program memory |
90 | avrxmega2 - XMEGA, > 8K, < 64K FLASH, < 64K RAM |
91 | avrxmega3 - XMEGA, RAM + FLASH < 64K, Flash visible in RAM |
92 | avrxmega4 - XMEGA, > 64K, <= 128K FLASH, <= 64K RAM |
93 | avrxmega5 - XMEGA, > 64K, <= 128K FLASH, > 64K RAM |
94 | avrxmega6 - XMEGA, > 128K, <= 256K FLASH, <= 64K RAM |
95 | avrxmega7 - XMEGA, > 128K, <= 256K FLASH, > 64K RAM |
96 | avrtiny - AVR Tiny core with 16 gp registers |
97 | -mall-opcodes accept all AVR opcodes, even if not supported by MCU |
98 | -mno-skip-bug disable warnings for skipping two-word instructions |
99 | (default for avr4, avr5) |
100 | -mno-wrap reject rjmp/rcall instructions with 8K wrap-around |
101 | (default for avr3, avr5) |
102 | -mrmw accept Read-Modify-Write instructions |
103 | -mlink-relax generate relocations for linker relaxation (default) |
104 | -mno-link-relax don't generate relocations for linker relaxation. |
105 | -mgcc-isr accept the __gcc_isr pseudo-instruction. |
106 | Known MCU names: |
107 | avr1 avr2 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6 avrxmega1 |
108 | avrxmega2 avrxmega3 avrxmega4 avrxmega5 avrxmega6 avrxmega7 avrtiny |
109 | at90s1200 attiny11 attiny12 attiny15 attiny28 at90s2313 at90s2323 |
110 | at90s2333 at90s2343 attiny22 attiny26 at90s4414 at90s4433 at90s4434 |
111 | at90s8515 at90c8534 at90s8535 ata5272 attiny13 attiny13a attiny2313 |
112 | attiny2313a attiny24 attiny24a attiny4313 attiny44 attiny44a attiny84 |
113 | attiny84a attiny25 attiny45 attiny85 attiny261 attiny261a attiny461 |
114 | attiny461a attiny861 attiny861a attiny87 attiny43u attiny48 attiny88 |
115 | attiny828 at86rf401 at43usb355 at76c711 atmega103 at43usb320 attiny167 |
116 | at90usb82 at90usb162 ata5505 atmega8u2 atmega16u2 atmega32u2 attiny1634 |
117 | atmega8 ata6289 atmega8a ata6285 ata6286 atmega48 atmega48a atmega48pa |
118 | atmega48p atmega88 atmega88a atmega88p atmega88pa atmega8515 atmega8535 |
119 | atmega8hva at90pwm1 at90pwm2 at90pwm2b at90pwm3 at90pwm3b at90pwm81 |
120 | at90pwm161 ata5790 ata5795 atmega16 atmega16a atmega161 atmega162 |
121 | atmega163 atmega164a atmega164p atmega164pa atmega165 atmega165a |
122 | atmega165p atmega165pa atmega168 atmega168a atmega168p atmega168pa |
123 | atmega169 atmega169a atmega169p atmega169pa atmega32 atmega32a atmega323 |
124 | atmega324a atmega324p atmega324pa atmega325 atmega325a atmega325p |
125 | atmega325pa atmega3250 atmega3250a atmega3250p atmega3250pa atmega328 |
126 | atmega328p atmega329 atmega329a atmega329p atmega329pa atmega3290 |
127 | atmega3290a atmega3290p atmega3290pa atmega406 atmega64rfr2 |
128 | atmega644rfr2 atmega64 atmega64a atmega640 atmega644 atmega644a |
129 | atmega644p atmega644pa atmega645 atmega645a atmega645p atmega649 |
130 | atmega649a atmega649p atmega6450 atmega6450a atmega6450p atmega6490 |
131 | atmega6490a atmega6490p atmega64rfr2 atmega644rfr2 atmega16hva |
132 | atmega16hva2 atmega16hvb atmega16hvbrevb atmega32hvb atmega32hvbrevb |
133 | atmega64hve at90can32 at90can64 at90pwm161 at90pwm216 at90pwm316 |
134 | atmega32c1 atmega64c1 atmega16m1 atmega32m1 atmega64m1 atmega16u4 |
135 | atmega32u4 atmega32u6 at90usb646 at90usb647 at90scr100 at94k m3000 |
136 | atmega128 atmega128a atmega1280 atmega1281 atmega1284 atmega1284p |
137 | atmega128rfa1 atmega128rfr2 atmega1284rfr2 at90can128 at90usb1286 |
138 | at90usb1287 atmega2560 atmega2561 atmega256rfr2 atmega2564rfr2 |
139 | atxmega16a4 atxmega16a4u atxmega16c4 atxmega16d4 atxmega32a4 |
140 | atxmega32a4u atxmega32c4 atxmega32d4 atxmega32e5 atxmega16e5 atxmega8e5 |
141 | atxmega32x1 attiny212 attiny214 attiny412 attiny414 attiny416 attiny417 |
142 | attiny814 attiny816 attiny817 attiny1614 attiny1616 attiny1617 |
143 | attiny3214 attiny3216 attiny3217 atxmega64a3 atxmega64a3u atxmega64a4u |
144 | atxmega64b1 atxmega64b3 atxmega64c3 atxmega64d3 atxmega64d4 atxmega64a1 |
145 | atxmega64a1u atxmega128a3 atxmega128a3u atxmega128b1 atxmega128b3 |
146 | atxmega128c3 atxmega128d3 atxmega128d4 atxmega192a3 atxmega192a3u |
147 | atxmega192c3 atxmega192d3 atxmega256a3 atxmega256a3u atxmega256a3b |
148 | atxmega256a3bu atxmega256c3 atxmega256d3 atxmega384c3 atxmega384d3 |
149 | atxmega128a1 atxmega128a1u atxmega128a4u attiny4 attiny5 attiny9 |
150 | attiny10 attiny20 attiny40 |
151 | |
152 | Report bugs to <http://www.sourceware.org/bugzilla/> |
"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 ...
:
Bearbeitet durch User
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 | + cd /home/ubuntixer/toolchain/downloads/avr-libc |
2 | + ./bootstrap |
3 | + rm -rf avr/lib |
4 | + ./devtools/gen-avr-lib-tree.sh |
5 | Generating source directories: |
6 | avr/lib/avr2/ |
7 | avr/lib/avr2/at90s1200 |
8 | avr/lib/avr2/attiny11 |
9 | avr/lib/avr2/attiny12 |
10 | avr/lib/avr2/attiny15 |
11 | avr/lib/avr2/attiny28 |
12 | avr/lib/avr2/at90s4414 |
13 | avr/lib/avr2/at90s4434 |
14 | avr/lib/avr2/at90s8515 |
15 | avr/lib/avr2/at90s8535 |
16 | avr/lib/avr2/at90c8534 |
17 | avr/lib/avr2/tiny-stack/ |
18 | avr/lib/avr2/tiny-stack/at90s2313 |
19 | avr/lib/avr2/tiny-stack/at90s2323 |
20 | avr/lib/avr2/tiny-stack/at90s2333 |
21 | avr/lib/avr2/tiny-stack/at90s2343 |
22 | avr/lib/avr2/tiny-stack/at90s4433 |
23 | avr/lib/avr2/tiny-stack/attiny22 |
24 | avr/lib/avr2/tiny-stack/attiny26 |
25 | avr/lib/avr25/ |
26 | avr/lib/avr25/at86rf401 |
27 | avr/lib/avr25/ata5272 |
28 | avr/lib/avr25/ata6616c |
29 | avr/lib/avr25/attiny4313 |
30 | avr/lib/avr25/attiny43u |
31 | avr/lib/avr25/attiny44 |
32 | avr/lib/avr25/attiny44a |
33 | avr/lib/avr25/attiny441 |
34 | avr/lib/avr25/attiny45 |
35 | avr/lib/avr25/attiny461 |
36 | avr/lib/avr25/attiny461a |
37 | avr/lib/avr25/attiny48 |
38 | avr/lib/avr25/attiny828 |
39 | avr/lib/avr25/attiny84 |
40 | avr/lib/avr25/attiny84a |
41 | avr/lib/avr25/attiny841 |
42 | avr/lib/avr25/attiny85 |
43 | avr/lib/avr25/attiny861 |
44 | avr/lib/avr25/attiny861a |
45 | avr/lib/avr25/attiny87 |
46 | avr/lib/avr25/attiny88 |
47 | avr/lib/avr25/tiny-stack/ |
48 | avr/lib/avr25/tiny-stack/attiny13 |
49 | avr/lib/avr25/tiny-stack/attiny13a |
50 | avr/lib/avr25/tiny-stack/attiny2313 |
51 | avr/lib/avr25/tiny-stack/attiny2313a |
52 | avr/lib/avr25/tiny-stack/attiny24 |
53 | avr/lib/avr25/tiny-stack/attiny24a |
54 | avr/lib/avr25/tiny-stack/attiny25 |
55 | avr/lib/avr25/tiny-stack/attiny261 |
56 | avr/lib/avr25/tiny-stack/attiny261a |
57 | avr/lib/avr3/ |
58 | avr/lib/avr3/at43usb355 |
59 | avr/lib/avr3/at76c711 |
60 | avr/lib/avr31/ |
61 | avr/lib/avr31/atmega103 |
62 | avr/lib/avr31/at43usb320 |
63 | avr/lib/avr35/ |
64 | avr/lib/avr35/at90usb82 |
65 | avr/lib/avr35/at90usb162 |
66 | avr/lib/avr35/ata5505 |
67 | avr/lib/avr35/ata6617c |
68 | avr/lib/avr35/ata664251 |
69 | avr/lib/avr35/atmega8u2 |
70 | avr/lib/avr35/atmega16u2 |
71 | avr/lib/avr35/atmega32u2 |
72 | avr/lib/avr35/attiny167 |
73 | avr/lib/avr35/attiny1634 |
74 | avr/lib/avr4/ |
75 | avr/lib/avr4/ata6285 |
76 | avr/lib/avr4/ata6286 |
77 | avr/lib/avr4/ata6289 |
78 | avr/lib/avr4/ata6612c |
79 | avr/lib/avr4/atmega48 |
80 | avr/lib/avr4/atmega48a |
81 | avr/lib/avr4/atmega48pa |
82 | avr/lib/avr4/atmega48pb |
83 | avr/lib/avr4/atmega48p |
84 | avr/lib/avr4/atmega8 |
85 | avr/lib/avr4/atmega8a |
86 | avr/lib/avr4/atmega88 |
87 | avr/lib/avr4/atmega88a |
88 | avr/lib/avr4/atmega88p |
89 | avr/lib/avr4/atmega88pa |
90 | avr/lib/avr4/atmega88pb |
91 | avr/lib/avr4/atmega8515 |
92 | avr/lib/avr4/atmega8535 |
93 | avr/lib/avr4/atmega8hva |
94 | avr/lib/avr4/at90pwm1 |
95 | avr/lib/avr4/at90pwm2 |
96 | avr/lib/avr4/at90pwm2b |
97 | avr/lib/avr4/at90pwm3 |
98 | avr/lib/avr4/at90pwm3b |
99 | avr/lib/avr4/at90pwm81 |
100 | avr/lib/avr5/ |
101 | avr/lib/avr5/at90can32 |
102 | avr/lib/avr5/at90can64 |
103 | avr/lib/avr5/at90pwm216 |
104 | avr/lib/avr5/at90pwm316 |
105 | avr/lib/avr5/at90pwm161 |
106 | avr/lib/avr5/at90scr100 |
107 | avr/lib/avr5/at90usb646 |
108 | avr/lib/avr5/at90usb647 |
109 | avr/lib/avr5/at94k |
110 | avr/lib/avr5/ata5702m322 |
111 | avr/lib/avr5/ata5782 |
112 | avr/lib/avr5/ata5790 |
113 | avr/lib/avr5/ata5790n |
114 | avr/lib/avr5/ata5795 |
115 | avr/lib/avr5/ata5831 |
116 | avr/lib/avr5/ata6613c |
117 | avr/lib/avr5/ata6614q |
118 | avr/lib/avr5/atmega16 |
119 | avr/lib/avr5/atmega16a |
120 | avr/lib/avr5/atmega161 |
121 | avr/lib/avr5/atmega162 |
122 | avr/lib/avr5/atmega163 |
123 | avr/lib/avr5/atmega164a |
124 | avr/lib/avr5/atmega164p |
125 | avr/lib/avr5/atmega164pa |
126 | avr/lib/avr5/atmega165 |
127 | avr/lib/avr5/atmega165a |
128 | avr/lib/avr5/atmega165p |
129 | avr/lib/avr5/atmega165pa |
130 | avr/lib/avr5/atmega168 |
131 | avr/lib/avr5/atmega168a |
132 | avr/lib/avr5/atmega168p |
133 | avr/lib/avr5/atmega168pa |
134 | avr/lib/avr5/atmega169 |
135 | avr/lib/avr5/atmega169a |
136 | avr/lib/avr5/atmega169p |
137 | avr/lib/avr5/atmega169pa |
138 | avr/lib/avr5/atmega16hva |
139 | avr/lib/avr5/atmega16hva2 |
140 | avr/lib/avr5/atmega16hvb |
141 | avr/lib/avr5/atmega16hvbrevb |
142 | avr/lib/avr5/atmega16m1 |
143 | avr/lib/avr5/atmega16u4 |
144 | avr/lib/avr5/atmega32 |
145 | avr/lib/avr5/atmega32a |
146 | avr/lib/avr5/atmega323 |
147 | avr/lib/avr5/atmega324a |
148 | avr/lib/avr5/atmega324p |
149 | avr/lib/avr5/atmega324pa |
150 | avr/lib/avr5/atmega325 |
151 | avr/lib/avr5/atmega325a |
152 | avr/lib/avr5/atmega325p |
153 | avr/lib/avr5/atmega325pa |
154 | avr/lib/avr5/atmega3250 |
155 | avr/lib/avr5/atmega3250a |
156 | avr/lib/avr5/atmega3250p |
157 | avr/lib/avr5/atmega3250pa |
158 | avr/lib/avr5/atmega328 |
159 | avr/lib/avr5/atmega328p |
160 | avr/lib/avr5/atmega329 |
161 | avr/lib/avr5/atmega329a |
162 | avr/lib/avr5/atmega329p |
163 | avr/lib/avr5/atmega329pa |
164 | avr/lib/avr5/atmega3290 |
165 | avr/lib/avr5/atmega3290a |
166 | avr/lib/avr5/atmega3290p |
167 | avr/lib/avr5/atmega3290pa |
168 | avr/lib/avr5/atmega32c1 |
169 | avr/lib/avr5/atmega32hvb |
170 | avr/lib/avr5/atmega32hvbrevb |
171 | avr/lib/avr5/atmega32m1 |
172 | avr/lib/avr5/atmega32u4 |
173 | avr/lib/avr5/atmega32u6 |
174 | avr/lib/avr5/atmega406 |
175 | avr/lib/avr5/atmega644rfr2 |
176 | avr/lib/avr5/atmega64rfr2 |
177 | avr/lib/avr5/atmega64 |
178 | avr/lib/avr5/atmega64a |
179 | avr/lib/avr5/atmega640 |
180 | avr/lib/avr5/atmega644 |
181 | avr/lib/avr5/atmega644a |
182 | avr/lib/avr5/atmega644p |
183 | avr/lib/avr5/atmega644pa |
184 | avr/lib/avr5/atmega645 |
185 | avr/lib/avr5/atmega645a |
186 | avr/lib/avr5/atmega645p |
187 | avr/lib/avr5/atmega6450 |
188 | avr/lib/avr5/atmega6450a |
189 | avr/lib/avr5/atmega6450p |
190 | avr/lib/avr5/atmega649 |
191 | avr/lib/avr5/atmega649a |
192 | avr/lib/avr5/atmega649p |
193 | avr/lib/avr5/atmega6490 |
194 | avr/lib/avr5/atmega6490a |
195 | avr/lib/avr5/atmega6490p |
196 | avr/lib/avr5/atmega64c1 |
197 | avr/lib/avr5/atmega64hve |
198 | avr/lib/avr5/atmega64hve2 |
199 | avr/lib/avr5/atmega64m1 |
200 | avr/lib/avr5/m3000 |
201 | avr/lib/avr51/ |
202 | avr/lib/avr51/atmega128 |
203 | avr/lib/avr51/atmega128a |
204 | avr/lib/avr51/atmega1280 |
205 | avr/lib/avr51/atmega1281 |
206 | avr/lib/avr51/atmega1284 |
207 | avr/lib/avr51/atmega1284p |
208 | avr/lib/avr51/atmega128rfa1 |
209 | avr/lib/avr51/atmega1284rfr2 |
210 | avr/lib/avr51/atmega128rfr2 |
211 | avr/lib/avr51/at90can128 |
212 | avr/lib/avr51/at90usb1286 |
213 | avr/lib/avr51/at90usb1287 |
214 | avr/lib/avr6/ |
215 | avr/lib/avr6/atmega2560 |
216 | avr/lib/avr6/atmega2561 |
217 | avr/lib/avr6/atmega2564rfr2 |
218 | avr/lib/avr6/atmega256rfr2 |
219 | avr/lib/avrxmega2/ |
220 | avr/lib/avrxmega2/atxmega8e5 |
221 | avr/lib/avrxmega2/atxmega16a4 |
222 | avr/lib/avrxmega2/atxmega16a4u |
223 | avr/lib/avrxmega2/atxmega16c4 |
224 | avr/lib/avrxmega2/atxmega16d4 |
225 | avr/lib/avrxmega2/atxmega32a4 |
226 | avr/lib/avrxmega2/atxmega32a4u |
227 | avr/lib/avrxmega2/atxmega32c3 |
228 | avr/lib/avrxmega2/atxmega32c4 |
229 | avr/lib/avrxmega2/atxmega32d3 |
230 | avr/lib/avrxmega2/atxmega32d4 |
231 | avr/lib/avrxmega2/atxmega32e5 |
232 | avr/lib/avrxmega3/ |
233 | avr/lib/avrxmega3/short-calls/ |
234 | avr/lib/avrxmega4/ |
235 | avr/lib/avrxmega4/atxmega64a3 |
236 | avr/lib/avrxmega4/atxmega64a3u |
237 | avr/lib/avrxmega4/atxmega64a4u |
238 | avr/lib/avrxmega4/atxmega64b1 |
239 | avr/lib/avrxmega4/atxmega64b3 |
240 | avr/lib/avrxmega4/atxmega64c3 |
241 | avr/lib/avrxmega4/atxmega64d3 |
242 | avr/lib/avrxmega4/atxmega64d4 |
243 | avr/lib/avrxmega5/ |
244 | avr/lib/avrxmega5/atxmega64a1 |
245 | avr/lib/avrxmega5/atxmega64a1u |
246 | avr/lib/avrxmega6/ |
247 | avr/lib/avrxmega6/atxmega128a3 |
248 | avr/lib/avrxmega6/atxmega128a3u |
249 | avr/lib/avrxmega6/atxmega128b1 |
250 | avr/lib/avrxmega6/atxmega128b3 |
251 | avr/lib/avrxmega6/atxmega128c3 |
252 | avr/lib/avrxmega6/atxmega128d3 |
253 | avr/lib/avrxmega6/atxmega128d4 |
254 | avr/lib/avrxmega6/atxmega192a3 |
255 | avr/lib/avrxmega6/atxmega192a3u |
256 | avr/lib/avrxmega6/atxmega192c3 |
257 | avr/lib/avrxmega6/atxmega192d3 |
258 | avr/lib/avrxmega6/atxmega256a3 |
259 | avr/lib/avrxmega6/atxmega256a3u |
260 | avr/lib/avrxmega6/atxmega256a3b |
261 | avr/lib/avrxmega6/atxmega256a3bu |
262 | avr/lib/avrxmega6/atxmega256c3 |
263 | avr/lib/avrxmega6/atxmega256d3 |
264 | avr/lib/avrxmega6/atxmega384c3 |
265 | avr/lib/avrxmega6/atxmega384d3 |
266 | avr/lib/avrxmega7/ |
267 | avr/lib/avrxmega7/atxmega128a1 |
268 | avr/lib/avrxmega7/atxmega128a1u |
269 | avr/lib/avrxmega7/atxmega128a4u |
270 | avr/lib/avrtiny/ |
271 | avr/lib/avrtiny/attiny4 |
272 | avr/lib/avrtiny/attiny5 |
273 | avr/lib/avrtiny/attiny9 |
274 | avr/lib/avrtiny/attiny10 |
275 | avr/lib/avrtiny/attiny20 |
276 | avr/lib/avrtiny/attiny40 |
277 | + rm -rf autom4te.cache |
278 | + aclocal |
279 | + autoheader |
280 | + autoconf |
281 | + automake --foreign --add-missing --copy |
282 | + cd /home/ubuntixer/toolchain/buildLinux/avr-libc |
283 | + ./config.guess |
284 | buildLinux.sh: 1: buildLinux.sh: ./config.guess: not found |
285 | + ../../downloads/avr-libc/configure --prefix=/home/ubuntixer/local/avrLinux64/ --host=avr --build= |
286 | checking build system type... x86_64-pc-linux-gnu |
287 | checking host system type... avr-unknown-none |
288 | checking if configuring for cross compile... yes |
289 | checking if target host is avr... yes |
290 | checking for a BSD-compatible install... /usr/bin/install -c |
291 | checking whether build environment is sane... yes |
292 | checking for avr-strip... no |
293 | checking for strip... strip |
294 | checking for a thread-safe mkdir -p... /bin/mkdir -p |
295 | checking for gawk... no |
296 | checking for mawk... mawk |
297 | checking whether make sets $(MAKE)... yes |
298 | checking whether make supports nested variables... yes |
299 | checking for avr-gcc... avr-gcc |
300 | checking whether we are cross compiling... yes |
301 | checking for suffix of object files... configure: error: in `/home/ubuntixer/toolchain/buildLinux/avr-libc': |
302 | configure: error: cannot compute suffix of object files: cannot compile |
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.
> 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.
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?
> 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?
:
Bearbeitet durch User
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 | # Prevent makeinfo from running if doc is unset. |
2 | if ! use doc ; then |
3 | sed -i \ |
4 | -e '/^MAKEINFO/s:=.*:= true:' \ |
5 | Makefile || die |
6 | fi |
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 | crossdev -s4 -P --verbose -t x86_64-w64-mingw32 |
2 | PORTDIR_OVERLAY="${PORTDIR_OVERLAY} /var/db/repos/cross-avr" x86_64-w64-mingw32-emerge -q -a --autounmask "=sys-devel/gcc-10.0.1_pre9999" |
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.
:
Bearbeitet durch User
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:)
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 | Support for the XMEGA-like devices |
2 | ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATmega808, ATmega809, ATmega1608, ATmega1609, ATmega3208, ATmega3209, ATmega4808, ATmega4809 |
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.
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 vom Autor 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 | /* ATmega328PB */ |
2 | #elif defined (__AVR_ATmega328PB__) |
3 | # include <avr/iom328pb.h> |
4 | /* begin new ATmegas */ |
5 | #elif defined (__AVR_ATmega808__) |
6 | # include <avr/iom808.h> |
7 | #elif defined (__AVR_ATmega809__) |
8 | # include <avr/iom809.h> |
9 | #elif defined (__AVR_ATmega1608__) |
10 | # include <avr/iom1608.h> |
11 | #elif defined (__AVR_ATmega1609__) |
12 | # include <avr/iom1609.h> |
13 | #elif defined (__AVR_ATmega3208__) |
14 | # include <avr/iom3208.h> |
15 | #elif defined (__AVR_ATmega3209__) |
16 | # include <avr/iom3209.h> |
17 | #elif defined (__AVR_ATmega4808__) |
18 | # include <avr/iom4808.h> |
19 | #elif defined (__AVR_ATmega4809__) |
20 | # include <avr/iom4809.h> |
21 | /* end new ATmegas */ |
22 | /* begin new ATtinys */ |
23 | #elif defined (__AVR_ATtiny202__) |
24 | # include <avr/iotn202.h> |
25 | #elif defined (__AVR_ATtiny204__) |
26 | # include <avr/iotn204.h> |
27 | #elif defined (__AVR_ATtiny212__) |
28 | # include <avr/iotn212.h> |
29 | #elif defined (__AVR_ATtiny214__) |
30 | # include <avr/iotn214.h> |
31 | #elif defined (__AVR_ATtiny402__) |
32 | # include <avr/iotn402.h> |
33 | #elif defined (__AVR_ATtiny404__) |
34 | # include <avr/iotn404.h> |
35 | #elif defined (__AVR_ATtiny406__) |
36 | # include <avr/iotn406.h> |
37 | #elif defined (__AVR_ATtiny412__) |
38 | # include <avr/iotn412.h> |
39 | #elif defined (__AVR_ATtiny414__) |
40 | # include <avr/iotn414.h> |
41 | #elif defined (__AVR_ATtiny416__) |
42 | # include <avr/iotn416.h> |
43 | #elif defined (__AVR_ATtiny417__) |
44 | # include <avr/iotn417.h> |
45 | #elif defined (__AVR_ATtiny804__) |
46 | # include <avr/iotn804.h> |
47 | #elif defined (__AVR_ATtiny806__) |
48 | # include <avr/iotn806.h> |
49 | #elif defined (__AVR_ATtiny807__) |
50 | # include <avr/iotn807.h> |
51 | #elif defined (__AVR_ATtiny814__) |
52 | # include <avr/iotn814.h> |
53 | #elif defined (__AVR_ATtiny816__) |
54 | # include <avr/iotn816.h> |
55 | #elif defined (__AVR_ATtiny817__) |
56 | # include <avr/iotn817.h> |
57 | #elif defined (__AVR_ATtiny1604__) |
58 | # include <avr/iotn1604.h> |
59 | #elif defined (__AVR_ATtiny1606__) |
60 | # include <avr/iotn1606.h> |
61 | #elif defined (__AVR_ATtiny1607__) |
62 | # include <avr/iotn1607.h> |
63 | #elif defined (__AVR_ATtiny1614__) |
64 | # include <avr/iotn1614.h> |
65 | #elif defined (__AVR_ATtiny1616__) |
66 | # include <avr/iotn1616.h> |
67 | #elif defined (__AVR_ATtiny1617__) |
68 | # include <avr/iotn1617.h> |
69 | #elif defined (__AVR_ATtiny3214__) |
70 | # include <avr/iotn3214.h> |
71 | #elif defined (__AVR_ATtiny3216__) |
72 | # include <avr/iotn3216.h> |
73 | #elif defined (__AVR_ATtiny3217__) |
74 | # include <avr/iotn3217.h> |
75 | /* end new ATtinys*/ |
Das wars. Ich hoffe das erleichtert dem Einen oder Andere die Arbeit. :-)
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.