无法编译任何C++程序;错误:未知类型名称'uint8_t'。

16

编辑2: 问题不是简单的排版错误。我在下面的日志中犯了一个拼写错误,我已经更正了,但问题仍然存在。

编辑:我曾在以下尝试后误运行了gcc而非g ++一次。问题在使用g++之前存在,现在也存在。

我目前使用的是MacOS High Sierra系统。我最近将许多文件从MacBook Air移动到了这台机器上,其中包括我认为所有Xcode的垃圾文件。现在,当我尝试编译一个非常简单的C++程序时:

#include <iostream>

int main()
{
    // VAR_DEC
    int a = 4;
    // VAR_MANIP
    a = a*2;
    // VAR_PRINT
    std::cout << a << std::endl;
    return 0;
}

I get the following ridiculous error:

jrfarah@Josephs-MBP: [config_file_script] $ g++ test.cpp -o test
In file included from test.cpp:1:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/iostream:38:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/ios:216:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/__locale:15:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/string:470:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/string_view:171:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/__string:56:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/algorithm:640:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/memory:629:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/typeinfo:61:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/exception:82:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/cstdlib:86:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/stdlib.h:94:
In file included from /usr/include/stdlib.h:65:
In file included from /usr/include/sys/wait.h:110:
/usr/include/sys/resource.h:196:2: error: unknown type name 'uint8_t'
        uint8_t  ri_uuid[16];
        ^
/usr/include/sys/resource.h:197:2: error: unknown type name 'uint64_t'
        uint64_t ri_user_time;
        ^
/usr/include/sys/resource.h:198:2: error: unknown type name 'uint64_t'
        uint64_t ri_system_time;
        ^
/usr/include/sys/resource.h:199:2: error: unknown type name 'uint64_t'
        uint64_t ri_pkg_idle_wkups;
        ^
/usr/include/sys/resource.h:200:2: error: unknown type name 'uint64_t'
        uint64_t ri_interrupt_wkups;
        ^
/usr/include/sys/resource.h:201:2: error: unknown type name 'uint64_t'
        uint64_t ri_pageins;
        ^
/usr/include/sys/resource.h:202:2: error: unknown type name 'uint64_t'
        uint64_t ri_wired_size;
        ^
/usr/include/sys/resource.h:203:2: error: unknown type name 'uint64_t'
        uint64_t ri_resident_size;
        ^
/usr/include/sys/resource.h:204:2: error: unknown type name 'uint64_t'
        uint64_t ri_phys_footprint;
        ^
/usr/include/sys/resource.h:205:2: error: unknown type name 'uint64_t'
        uint64_t ri_proc_start_abstime;
        ^
/usr/include/sys/resource.h:206:2: error: unknown type name 'uint64_t'
        uint64_t ri_proc_exit_abstime;
        ^
/usr/include/sys/resource.h:210:2: error: unknown type name 'uint8_t'
        uint8_t  ri_uuid[16];
        ^
/usr/include/sys/resource.h:211:2: error: unknown type name 'uint64_t'
        uint64_t ri_user_time;
        ^
/usr/include/sys/resource.h:212:2: error: unknown type name 'uint64_t'
        uint64_t ri_system_time;
        ^
/usr/include/sys/resource.h:213:2: error: unknown type name 'uint64_t'
        uint64_t ri_pkg_idle_wkups;
        ^
/usr/include/sys/resource.h:214:2: error: unknown type name 'uint64_t'
        uint64_t ri_interrupt_wkups;
        ^
/usr/include/sys/resource.h:215:2: error: unknown type name 'uint64_t'
        uint64_t ri_pageins;
        ^
/usr/include/sys/resource.h:216:2: error: unknown type name 'uint64_t'
        uint64_t ri_wired_size;
        ^
/usr/include/sys/resource.h:217:2: error: unknown type name 'uint64_t'
        uint64_t ri_resident_size;
        ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.

我已经尝试安装和重新安装与问题相关的所有内容,例如gccg++ccbrew,Xcode,command-line-tools等。我还尝试了以下页面上的所有建议:

还有更多,但这些总结得很好。没有任何解决方案起作用。

我认为最后一个可能有最可行的解决方案。(如果您在页面上搜索“unknown”,您将看到修复方法。)根据开发人员的说法:

解决方案:从“Header Search Paths”构建设置中删除/opt/local/include/**和/opt/local/lib/**。将它们替换为更具体的路径,以便访问所需的包含目录。在我特定的情况下,这意味着将它们替换为/opt/local/include/glib-2.0 /opt/local/lib/glib-2.0/include /opt/local/include/。现在它可以正常运行了!

但是,我没有安装Xcode,我只安装了命令行开发人员工具。因此,我无法轻松访问“Header Search Paths”构建设置,因此无法尝试他的解决方案。

我正在寻找解决此问题的解决方案,最好不需要我安装整个操作系统。或者,如果有人可以友善地指导我找到构建设置文件,我将非常感激。


评论不是用于长时间讨论的;此对话已经移至聊天室 - Bhargav Rao
3个回答

18

也许您可以尝试:

mv /usr/local/include /usr/local/include.old

然后:

brew install llvm


2
这个解决方案适用于我。这个问题发生在从另一台笔记本电脑迁移后,重新安装Xcode/开发工具没有起作用,其他任何建议的解决方案也都不行。虽然这不是被接受的答案,但它要简单得多。 我建议您mv /usr/local/include ~/include.old而不是rm。 - Lorenzo

4

很明显,您损坏了系统GCC安装。请注意,GCC是一组编译器,G++是C ++前端。软件包管理器通常有一个名为gcc-g++的单独软件包,但是在从源代码编译时,您只需执行--enable-languages=c,c++。如果重新安装XCode无法解决问题(如果“它占用太多空间”,只需将其删除),则可以尝试从源代码编译GCC。改编自GNU wiki

  • 首先,从这里获取您所需的GCC tar ball。

  • 使用tar zxvf gcc*解压缩它

  • cd gcc*然后./contrib/download_prerequisites

  • 进行源外构建:mkdir build && cd build

  • ../gcc*/configure --prefix=$HOME/gcc-install --enable-languages=c,c++

  • makemake install

现在只需将$HOME/gcc-install/bin添加到您的路径中,您就可以开始了。


2
这解决了我的问题!我还想补充一点,在尝试这个之前,我必须手动删除命令行工具目录手动;除此之外,这个方法很有效!谢谢你!另外,我希望我能为“borked”这个词的完美使用点赞两次。 - Joseph Farah
什么起作用了?你不可能那么快就编译GCC。 - OwO
这通常是我解决问题的步骤——从源代码编译GCC并将其添加到我的路径中。我遇到了一些小问题,这就是为什么我没有发布类似答案的原因,但我已经将问题缩小到之前安装ROOT上,并且我一直在努力解决它已经几个小时了。对于任何困惑,我感到抱歉! - Joseph Farah
我想再次确认您的答案完全有效。 最近我不得不在同事的计算机上解决类似的问题,按照您的确切步骤解决了它。 显然,在我的机器上只需要手动删除“命令行工具”目录。 再次感谢您的帮助! - Joseph Farah

2

我在编译 Perl-5.34.0 源代码时遇到了这个错误。对我有效的替代方案是设置 SDK 环境变量:

export SDK=`xcrun --show-sdk-path`

有时,您可能需要以相同的方式设置SDKROOT:
export SDKROOT=`xcrun --show-sdk-path`

将其放入您的~/.profile文件中将会(方便地)使此设置永久生效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接