Eclipse erkennt keine Typen aus stdint.h für die ARM Windows GCC-Toolchain

8

Ich habe Eclipse Juno für C / C ++ - Entwickler zusammen mit dem GNU ARM C / C ++ Entwicklungs-Support-Plugin von Ссылка installiert.

In meinem Projekt verwende ich Typen wie uint_32t , int16_t und uint8_t , die normalerweise von stdint.h kommen. Während ich die Eclipse gezwungen habe, die Standard-Header meines Compilers zu sehen, indem ich direkt auf das Verzeichnis, in dem sich das include -Verzeichnis befindet, zeigt, werden die genannten Typen nicht aufgelöst. Dies gibt mir viele rote Markierungen über nicht aufgelöste Symbole und einige Probleme mit Code-Vervollständigung der Funktionen, die mit diesen Typen deklariert sind.

Das gleiche Problem ist mit Standard-Makrodefinitionen wie GNUC - normalerweise CDT sehen Sie diese für GNU C oder GNU C ++, aber mit Toolchain auf ARM Windows GCC gesetzt nicht tun. Seltsam.

Was kann ich tun, um das zu beheben und den Haupt-Boost zurückzugeben, den Eclipse an Produktivität liefert?

    
Manveru 26.07.2012, 09:16
quelle

6 Antworten

7

Ich glaube, ich habe eine Lösung für mein Problem gefunden. Das Problem war der Anbieter CDT GCC Builtin Compiler Settings , der versuchte, gcc anstelle von arm-elf-gcc auszuführen. Ich habe dem Feld Command to get compiler specs: ¹ ein Präfix hinzugefügt, um den Compiler mit seinem richtigen Namen aufzurufen.

Und voilà, alle ungelösten Symbole sind verschwunden.

Leider habe ich mein Projekt durch das Ändern von Toolchains (mache das nie, wenn du GNU ARM Eclipse installiert hast!), aber das ist eine andere Geschichte.

¹ - Es befindet sich unter: Project Properties > C/C++ General > Preprocessor Include Paths, Macros etc. , die Registerkarte Providers ; Share settings entries between projects (global provider) muss deaktiviert sein, um dieses Feld zu bearbeiten.

    
Manveru 31.07.2012, 11:06
quelle
1

Bitte beachten Sie, dass GNU ARM Eclipse Plugins im Oktober 2013 aktualisiert wurden und die neue Version die Pfadsuche besser unterstützt, daher ist es weniger wahrscheinlich, dass dieses Problem auftritt.

das Ändern von Toolchains wurde ebenfalls behoben.

    
ilg 22.01.2014 12:01
quelle
1

Wenn Sie externes Makefile verwenden, kann Eclipse nicht feststellen, wo sich Ihre Standardbibliothek für die Zielplattform befindet. Die Lösung, die ich gefunden habe, ist das Hinzufügen der Bibliothek Include-Pfade zu

Project->Preferences->C++ General->Paths and symbols .

    
Vorac 24.02.2015 10:09
quelle
1

Ich hatte das gleiche Problem und die Lösung von dieser Seite half es zu lösen:

  • Projekteigenschaften eingeben - & gt; C / C ++ - & gt; Preprozessor Include-Pfade, etc .- & gt; Provider
  • Klicken Sie auf CDT GCC Build Output Parser und ändern Sie das Compiler-Befehlsmuster von (gcc)|([gc]++)|(clang) in (arm-none-eabi-gcc)|([gc]++)|(clang)
  • Klicken Sie auf die Schaltfläche
  • Klicken Sie auf CDT Built-in Compiler-Einstellungen. Überkreuzen Sie ARM und ersetzen Sie ${COMMAND} durch arm-none-eabi-gcc .
  • Klicken Sie auf die Schaltfläche "Anwenden".
Vahid Shirvani 29.10.2015 09:14
quelle
1

In Project > Properties > C/C++ General > Preprocessor Include Paths > Providers :

  • Aktivieren Sie CDT GCC Built-in Compiler Settings Cross ARM .

  • Setzen Sie Command to get compiler specs auf:

    %Vor%
    • Der wichtige Teil ist der .C am Ende. Dies wird normalerweise abhängig von der Sprache eingestellt. Ein kleines .c wird für C-Code verwendet, während das große C für C ++ verwendet wird. Es werden jedoch keine Sprachen angegeben, wenn ein externes Makefile oder die Option no toolchain verwendet wird.
  • Überprüfen Sie auch Allocate console in the Console View , um zu überprüfen, ob der Befehl korrekt ausgeführt wird und die Variablen korrekt ersetzt werden.

  • Aktivieren Sie CDT GCC Build Output Parser und ändern Sie das Compiler-Befehlsmuster von (gcc)|([gc]\+\+)|(clang) in (.*g++)|(.*gcc)|(.*[gc]\+\+) und übernehmen Sie dann die Änderungen. Verwenden Sie die Schaltflächen Move up/down , um sie über die CDT GCC Built-in Compiler Settings Cross ARM zu verschieben.

Sie müssen auch Project > Properties > C/C++ General > Preprocessor Include Paths > Entries > CDT User Settings Entries auf Folgendes setzen:

In Preferences > String Substitutions müssen Sie eine Variable für gnu-arm-path erstellen, die auf Ihre Toolchain-Startseite zeigt.

Idealerweise sollten diese in CDT GCC Built-in Compiler Settings Cross ARM gefunden werden, aber in meinem Fall nicht. Ich denke, es hat damit zu tun, dass in einem verwalteten Projekt diese Einträge an jede Sprache gebunden sind. Aber mit einem externen Makefile sagt das Sprachenlistenfeld nur [Unspecified] .

Das Eclipse-Scanner-Provider-System scheint auf CDT-gemanagte Projekte ausgelegt zu sein, was es ein wenig komplizierter macht, wenn Sie ein externes Makefile verwenden.

Sie können ein neues verwaltetes Projekt mit einem externen Makefile erstellen und die Scanner-Erkennungskonsole anzeigen, um zu sehen, wie es funktionieren soll. Das habe ich gemacht.

    
vaughan 16.08.2016 21:50
quelle
0

Ich stieß auf eine völlig andere Lösung meiner Version dieses (in) berühmten Problems. In meinem Fall waren Suchpfade nicht das Problem, weil der Compiler gut funktionierte. Trotzdem klagte der Redakteur über unaufgelöste CSTDINT-Typen überall: sehr nervig. Googlen für die Lösung mit der Fehlermeldung Zeichenfolge war nicht fruchtbar und sehr frustrierend.

Ich fand die Lösung dieses Problems zufällig in einer Antwort ("Es gibt jetzt einen neuen Weg, dies ohne den GXX_EXPERIMENTAL-Hack zu lösen") zu folgendem Thread:

Eclipse CDT C ++ 11 / C ++ 0x Unterstützung

Prost

    
Anton 02.05.2015 12:37
quelle

Tags und Links