Reputation: 31
I have been putting together a m68k cross compile "environment/toolchain" of sorts for some upcoming projects I have planned, and I'm having an issue when using it on macOS (my native environment) specifically.
If I follow my own instructions to install on Linux (https://github.com/tomstorey/m68k_bare_metal/blob/master/INSTALL-Debian-Ubuntu.md), then in my code I am able to use types such as uint8_t
etc through #include <stdint.h>
.
But if I install on macOS and attempt to do the same thing I am greeted with this error:
In file included from main.c:1:
/Users/tstorey/m68k/m68k-unknown-elf/lib/gcc/m68k-unknown-elf/9.3.0/include/stdint.h:9:16: fatal error: stdint.h: No such file or directory
9 | # include_next <stdint.h>
| ^~~~~~~~~~
compilation terminated.
make: *** [main.o] Error 1
I've done a little searching around, but I'm not having much luck finding an answer, perhaps because I don't really know what to search for other than "stdint.h not found".
One topic I did find suggested that include_next
shouldnt really be used, but that same person wouldnt recommended modifying the original stdint.h
file to work around it. Presumably since in that case it is including <stdint.h>
then this file should be located somewhere "system wise", and gcc
should know where to look to find it? But presumably that location doesnt exist.
In the same directory where the the stdint.h
file I am trying to include is located there is a stdint-gcc.h
file which, if I include this in my code, it will compile fine, no worries.
The original stdint.h
file does seem to attempt to include this file, but only if __STDC_HOSTED__
is not defined:
$ cat stdint.h
#ifndef _GCC_WRAP_STDINT_H
#if __STDC_HOSTED__
# if defined __cplusplus && __cplusplus >= 201103L
# undef __STDC_LIMIT_MACROS
# define __STDC_LIMIT_MACROS
# undef __STDC_CONSTANT_MACROS
# define __STDC_CONSTANT_MACROS
# endif
# include_next <stdint.h>
#else
# include "stdint-gcc.h"
#endif
#define _GCC_WRAP_STDINT_H
#endif
Sorry if this post is a bit wofty, but I am not experienced enough with gcc
etc to really be able to work this out and I'm still learning a lot about setting all of this up, so I'm wondering if anyone knows what I have missed.
Thanks
Upvotes: 3
Views: 8139
Reputation: 1542
Quoting another mans reply
For those building inside minimalists containers, the error caused by the # include_next <stdint.h> from /usr/lib/gcc/x86_64-linux-gnu/*/include/stdint.h which might be provided by libc6-dev (instead of avr-libc).
Installing libc6-dev
should probably resolve the issue.
source: https://github.com/castwide/solargraph/issues/195#issuecomment-614064314
Upvotes: 0
Reputation: 6073
When your particular version of gcc has been built, it was apparently not built for a hosted environment (i.e. full availability of a standard C library, for example newlib). When this is the case, you cannot expect standard library support and are on your own.
You probably want to re-build gcc with newlib support.
Upvotes: 0