Code::Blocks: AVR - Compiler-Kommandozeile bekommt Host-Optionen

OP #6680182
Lesenswert?
• ▲
▼
Hallo Kolleg:innen,

ich bekomme bei Kompilieren mit Code::Blocks (20.03) auf einem 
Linux-Mint PC folgende Fehlermeldung:
1
------------- Build: Debug in test3 (compiler: GNU GCC Compiler for AVR)---------------
2

3
avr-gcc -Wall -mmcu=atxmega128a1u -DF_CPU=2000000UL -g -Os -I/usr/include -c main.c -o obj/Debug/main.o
4
avr-gcc -L/usr/lib -o bin/Debug/test3.elf obj/Debug/fuse.o obj/Debug/main.o  -mmcu=atxmega128a1u -Wl,-Map=bin/Debug/test3.map,--cref  
5
In file included from /usr/include/math.h:43:0,
6
                 from /usr/lib/avr/include/util/delay.h:46,
7
                 from main.c:5:
8
/usr/include/bits/floatn.h:75:1: Fehler: Unbekannter Maschinenzustand »__TC__«
9
 typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__TC__)));
10
 ^
11
/usr/include/bits/floatn.h:87:9: Fehler: unbekannter Typname: »__float128«
12
 typedef __float128 _Float128;
13
         ^
14
main.c: In Funktion »main«:
15
main.c:22:5: Fehler: expected declaration or statement at end of input
16
     }
17
     ^
18
Process terminated with status 1 (0 minute(s), 0 second(s))
19
3 error(s), 0 warning(s) (0 minute(s), 0 second(s))

Auf einem zweiten Linux-Mint PC mit (vermeindlich) gleicher 
Konfiguration funktioniert es ohne Probleme. Ich habe alle Einstellungen 
verglichen, kann aber keinen Unterschied feststellen.

Vielleicht hat jemand eine Idee oder einen Denkanstoß.
Ich bin Bascom-Umsteiger und gerade erst dabei C zu lernen, also habt 
Nachsicht :-)


Hier noch der äußerst anspruchsvolle Code:
1
//#define F_CPU 2E6
2
#include <avr/io.h>
3
#include <util/delay.h>
4

5
int main(void)
6
{
7
  //DDRD |= (1<<PD0);
8
   PORTC.DIR = PIN0_bm | PIN1_bm;
9
    /* Replace with your application code */
10
    while (1)
11
    {
12
      //PORTD = (1<<PD0);
13
      //PORTC.OUTSET |= (1<<PIN1);
14
      PORTC.OUTSET = PIN0_bm;
15
      _delay_ms(1000);
16
      //PORTD &= ~(1<<PD0);
17
      //PORTC.OUTSET &= ~(1<<PIN1);
18
      PORTC.OUTCLR = PIN0_bm;
19
      _delay_ms(1000);
20
    }
Moderator Persönliche Seite #6680187
Lesenswert?
• ▲
▼
Nein, du hast keinen "unbekannten Maschinenzustand", sondern 
Code::Blocks schreibt aus irgendeinem Grund explizit ein 
-I/usr/include (und -L/usr/lib) in die Compiler-Kommandozeile.

Die gehören da nicht hin.

Die Frage ist also, warum sie da Dinge vom Host hinein mischen, wenn für 
einen AVR compiliert werden soll.

Edit:

Ich habe den Titel mal editiert, damit sich vielleicht potenzielle 
Antworter einfinden können, die sich mit Code::Blocks für AVR auskennen.
Gast #6680445
Lesenswert?
• ▲
▼
Jörg W. schrieb:
> Die Frage ist also, warum sie da Dinge vom Host hinein mischen, wenn für
> einen AVR compiliert werden soll.

...bzw. warum sie überhaupt Directory-Parameter mitgeben.

Jörg W. schrieb:
> Ich habe den Titel mal editiert, damit sich vielleicht potenzielle
> Antworter einfinden können, die sich mit Code::Blocks für AVR auskennen.

Settings - Compiler - "GNU AVR GCC Compiler" auswählen, dann unter 
"Search directories" bei Compiler und Linker jeweils das eingetragene 
Directory entfernen.

Vorsicht, nach einer automatischen Compiler-Erkennung beim Start (z.B. 
weil eine der anderen konfigurierten Toolchains deinstalliert wurde) 
könnten die wieder auftauchen.
OP #6681316
Lesenswert?
• ▲
▼
Super, vielen Dank!
Das war die Lösung!

Jetzt habe ich mit Geany und Code::Blocks zwei IDEs mit denen ich meinen 
Xmega programmieren kann. Meiner steilen C-Programmierer Karriere steht 
also nichts mehr im Weg :-) außer meiner mangelhaften C-Kenntnisse :-)

Eine kleine Frage hätte ich allerdings noch:
Beim Erstellen eines neuen AVR-Projekts in Code::Blocks kann ich nur den 
atxmega128a1u auswählen. Ich habe aber den atxmega128a4u.
Macht das irgendwelche Probleme, bzw. kann ich irgendwie diese 
Auswahlliste aktualisieren?

Vielen Dank!
Gast #6681667
Lesenswert?
• ▲
▼
Marie L. schrieb:
> Meiner steilen C-Programmierer Karriere steht
> also nichts mehr im Weg :-) außer meiner mangelhaften C-Kenntnisse :-)

Das wird schon, genug Motivation scheint ja vorhanden zu sein.

Marie L. schrieb:
> Macht das irgendwelche Probleme, bzw. kann ich irgendwie diese
> Auswahlliste aktualisieren?

Wenn Dir die Haken im Menü wichtig sind, kannst Du options_avr-gcc.xml 
editieren.

Ansonsten entfernst Du einfach in Project - Build options - Compiler 
Flags alle MCU-Haken und setzt den Parameter stattdessen von Hand unter 
"Other compiler options" rein: -mmcu=atxmega128a4u

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.