Forum: Compiler & IDEs # include_next <stdint.h>


von Joachim .. (joachim_01)


Lesenswert?

Ich versuche gerade ein Example des Atmel Software Framework unter Linux 
zu compilieren.
1
joachim@Asus-Kiste ~/Atmel/ASF/asf-3.22.0/sam/drivers/rtc/example/sam3x8e_arduino_due_x/gcc $ make
2
make all PROJECT_TYPE=flash
3
CC      common/services/clock/sam3x/sysclk.o
4
In file included from ../../../../../../sam/utils/cmsis/sam3x/include/sam3x8e.h:62:0,
5
                 from ../../../../../../sam/utils/cmsis/sam3x/include/sam3xa.h:59,
6
                 from ../../../../../../sam/utils/header_files/io.h:75,
7
                 from ../../../../../../sam/utils/compiler.h:67,
8
                 from ../../../../../../common/boards/board.h:62,
9
                 from ../../../../../../common/services/clock/sam3x/osc.h:50,
10
                 from ../../../../../../common/services/clock/osc.h:55,
11
                 from ../../../../../../common/services/clock/sam3x/sysclk.h:50,
12
                 from ../../../../../../common/services/clock/sysclk.h:59,
13
                 from ../../../../../../common/services/clock/sam3x/sysclk.c:47:
14
/usr/lib/gcc/arm-none-eabi/4.8.2/include/stdint.h:9:26: fatal error: stdint.h: No such file or directory
15
 # include_next <stdint.h>
16
                          ^
17
compilation terminated.
18
make[1]: *** [common/services/clock/sam3x/sysclk.o] Error 1
19
make: *** [all] Error 2


Die Datei stdint.h existiert und ruft, wenn ich das richtig verstehe 
sich selbst als nächste auf. Hmmm...
Hier der Inhalt der Datei 
/usr/lib/gcc/arm-none-eabi/4.8.2/include/stdint.h
1
#ifndef _GCC_WRAP_STDINT_H
2
#if __STDC_HOSTED__
3
# if defined __cplusplus && __cplusplus >= 201103L
4
#  undef __STDC_LIMIT_MACROS
5
#  define __STDC_LIMIT_MACROS
6
#  undef __STDC_CONSTANT_MACROS
7
#  define __STDC_CONSTANT_MACROS
8
# endif
9
# include_next <stdint.h>
10
#else
11
# include "stdint-gcc.h"
12
#endif
13
#define _GCC_WRAP_STDINT_H
14
#endif
Hm. Von welcher <stdint.h> ist hier eigentlich die Rede? Und was ist 
dieses merkwürdige # include_next <stdint.h> Konstrukt überhaupt?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

#include_next

Kannte ich auch noch nicht.

Klingt aber ... schrecklich:

https://gcc.gnu.org/onlinedocs/cpp/Wrapper-Headers.html

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Joachim ... schrieb:
> Die Datei stdint.h existiert und ruft, wenn ich das richtig verstehe
> sich selbst als nächste auf.

Nein.

Includiert wird die nächste stdint.h, die in Suchpfaden gefunden wird — 
oder eben ein fehler wenn nix zu finden ist.

Der Header geht von einem bestimmten Layout der Header / Installation 
aus:

Entweder es fehlt ein Teil der Installation, z.B. LibC, die ihrerseits 
den eigentlichen stdint.h verfügbar hat, oder GCC wurde nicht korrekt 
auf die Umgebung angepasst.  Die Anpassung kannst du korrigieren in 
config.gcc, die Variable heißt use_gcc_stdint.

Heutzutage könnte der Header auch so aussehen:
1
#ifdef __has_include_next
2
#if __has_include_next <stdint.h>
3
#include_next <stdint.h>
4
#endif
5
#endif

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
Noch kein Account? Hier anmelden.