Подтвердить что ты не робот

Невозможно скомпилировать любые С++-программы; error: неизвестное имя типа 'uint8_t'

EDIT2: проблема была НЕ простой типографской ошибкой. Я сделал опечатку в журналах ниже, что я исправил, но проблема все еще была.

EDIT: я ошибочно работал с gcc вместо g++, один раз, после попытки ниже. Проблема была там раньше с g++, и она есть сейчас.

В настоящее время я нахожусь в коробке MacOS High Sierra. Недавно я переместил много файлов с MacBook Air на эту машину, включая то, что, как я полагаю, был весь Xcode-мусором. Теперь, когда я пытаюсь скомпилировать очень простую программу на С++:

#include <iostream>

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

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

[email protected]: [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 и т.д. Я также пробовал все предложения на следующих страницах:

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

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

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

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

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

4b9b3361

Ответ 1

Довольно очевидно, что вы устроили установку GCC в вашей системе. Обратите внимание, что GCC - это набор компиляторов, а g++ - это интерфейс С++. Менеджеры пакетов часто имеют отдельный пакет под названием 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++

  • make и make install

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