我一直在为我计划的一些即将到来的项目组合一个 m68k 交叉编译“环境/工具链”,特别是在 macOS(我的原生环境)上使用它时遇到了问题。
如果我按照自己的说明在 Linux 上安装(https://github.com/tomstorey/m68k_bare_metal/blob/master/INSTALL-Debian-Ubuntu.md),那么在我的代码中我可以使用诸如uint8_t
etc 通过#include <stdint.h>
.
但是,如果我在 macOS 上安装并尝试做同样的事情,我会遇到这个错误:
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
我已经做了一些搜索,但我没有找到答案,也许是因为我真的不知道除了“stdint.h not found”之外要搜索什么。
我确实发现的一个主题建议include_next
不应该真正使用,但同一个人不会建议修改原始stdint.h
文件来解决它。大概是因为在这种情况下它包含<stdint.h>
然后这个文件应该位于“系统明智”的某个地方,并且gcc
应该知道在哪里可以找到它?但大概那个位置不存在。
stdint.h
在我试图包含的文件所在的同一目录中,有一个stdint-gcc.h
文件,如果我在我的代码中包含它,它将编译得很好,不用担心。
原始stdint.h
文件似乎确实试图包含此文件,但前提__STDC_HOSTED__
是未定义:
$ 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
抱歉,如果这篇文章有点笨拙,但是我对gcc
等方面的经验还不够,无法真正解决这个问题,而且我仍在学习很多关于设置所有这些的知识,所以我想知道是否有人知道我错过了。
谢谢