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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren