Не удается скомпилировать программы на C++; ошибка: неизвестное имя типа "uint8 t"

EDIT2: проблема не простая опечатка. Я сделал опечатку в журналах ниже, которую я исправил, но проблема все еще была там.

EDIT: я ошибочно работал с 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;
}

Я получаю следующую нелепую ошибку:

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.

Я попытался установить и переустановить все, что я мог придумать, связанные с проблемой, такие как gcc, g++, cc, brew, Xcode,command-line-tools, etc. Я также пробовал все предложения на следующих страницах:

и многое другое, но они суммируют это довольно хорошо. Ни одно из решений не работали.

Я думаю последний имеет наиболее вероятное решение. (Если вы ищете " неизвестно" на странице вы увидите исправление.) По словам разработчика:

исправить: удалить /opt / local / include /** и/opt/local/ lib / ** из настроек сборки "пути поиска заголовков". Замените их гораздо более конкретными путями к нужным каталогам include. В моем конкретном случае это означало замену их на /opt/local/include /glib-2.0/opt/local/lib/glib-2.0 /include/opt/local/include/. Он снова работает!

однако я не устанавливал Xcode, я установлены только средства разработчика командной строки. Поэтому у меня нет простого способа доступа к настройкам сборки "пути поиска заголовков", и поэтому я не могу попробовать его решение.

Я ищу решение этой проблемы, желательно такое, которое не требует установки всей ОС. В качестве альтернативы, если кто-то может любезно провести меня через поиск файла настроек сборки, я был бы очень благодарен.

2 ответов


это довольно очевидно, что вы borked вашей установки системы GCC. Обратите внимание, что GCC является люкс компиляторов и G++ является интерфейсом C++. Менеджеры пакетов часто имеют отдельный пакет под названием gcc-g++, однако, при компиляции из исходного кода Вы просто делаете --enable-languages=c,c++. Теперь, если переустановка XCode не решает проблему (вы уже должны были это сделать, если "это занимает слишком много места", просто удалите его), то вы можете попробовать скомпилировать GCC из источника. Адаптировано из GNU wiki:

  • во-первых, возьмите желаемый GCC tar ball от здесь

  • Untar его с tar zxvf gcc*

  • cd gcc* затем ./contrib/download_prerequisites

  • сделайте исходную сборку:mkdir build && cd build

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

  • make и make install

теперь просто добавить $HOME/gcc-install/bin в ваш путь и вы должны быть хорошо идти.


может быть, вы можете попробовать:

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

затем:

brew install llvm