Ich verwende eine neu kompilierte Version der GCC-Toolchain für die ARM-Plattform namens Yagarto. Der Compiler wird mit einer „Standardbibliothek“ namens Newlib und „Standardheadern“ wie stdio.h
.
printf
Für mein Vorhaben ist die Lizenzierung von Newlib nicht geeignet, daher habe ich eine Funktion woanders verwendet . Das Problem ist, dass anscheinend die integrierten Header-Dateien implizit in jeder .c-Datei enthalten sind, und ich erhalte die folgende Fehlermeldung:
c:/yagarto4.6.0/lib/gcc/../../arm-none-eabi/sys-include/stdio.h:182:5: Fehler: widersprüchliche Typen für „printf“
Gibt es eine Möglichkeit, dass Yagarto die Standardbibliotheken nicht standardmäßig lädt?
Aus der GCC-Manpage:
-nostdinc Durchsucht die Standard-Systemverzeichnisse nicht nach Header-Dateien. Es werden nur die Verzeichnisse durchsucht, die Sie mit den Optionen -I angegeben haben (und ggf. das Verzeichnis der aktuellen Datei).
-nostdinc++ Nicht nach Header-Dateien in den C++-spezifischen Standardverzeichnissen suchen, aber dennoch die anderen Standardverzeichnisse durchsuchen. (Diese Option wird beim Erstellen der C++-Bibliothek verwendet.)
Andere Optionen wären der explizite Verweis auf die Header-Dateien, die Sie einschließen möchten, und die Angabe ihres Verzeichnisses mit -I (das vor den Standard-Includes durchsucht wird). Oder Sie könnten einfach das Verzeichnis der inkompatibel lizenzierten Header aus der Installation entfernen (oder verschieben).
Sie können auch -nostdlib für den Linker verwenden.
printf
?
Connor Wolf