首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包括stdint.h未找到的stdint.h中的next‘d

包括stdint.h未找到的stdint.h中的next‘d
EN

Stack Overflow用户
提问于 2020-07-06 18:15:25
回答 1查看 2.6K关注 0票数 1

我一直在为我计划的一些即将到来的项目准备一个m68k交叉编译的“环境/工具链”,特别是在macOS (我的原生环境)上使用它时,我遇到了一个问题。

如果我按照自己的指示在Linux (https://github.com/tomstorey/m68k_bare_metal/blob/master/INSTALL-Debian-Ubuntu.md)上安装,那么在我的代码中,我可以通过#include <stdint.h>使用uint8_t等类型。

但是,如果我在macOS上安装并试图做同样的事情,我会遇到这样的错误:

代码语言:javascript
复制
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找不到“。

我发现的一个话题是,include_next不应该真正被使用,但是同样的人不会建议修改原始的stdint.h文件来绕过它。可能是因为在这种情况下它包含了<stdint.h>,那么这个文件应该位于“系统智能”的某个位置,而gcc应该知道在哪里可以找到它?但据推测,地理位置并不存在。

在我要包含的stdint.h文件所在的同一个目录中,有一个stdint-gcc.h文件,如果我在代码中包含这个文件,它将编译得很好,不用担心。

原始stdint.h文件似乎确实试图包含此文件,但只有在未定义__STDC_HOSTED__的情况下:

代码语言:javascript
复制
$ 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等方面的经验还不足以解决这个问题,而且我仍然在学到很多关于设置这一切的知识,所以我想知道是否有人知道我错过了什么。

谢谢

EN

Stack Overflow用户

发布于 2020-07-29 19:40:02

当构建了gcc的特定版本时,它显然不是为宿主环境构建的(例如,标准C库的全面可用性,例如newlib)。在这种情况下,您不能期望标准库支持,而只能靠您自己。

你可能想要在新的库支持下重建gcc。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62762049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档