Не могу скомпилировать C ++ 'hello world' с помощью `# include` после обновления до Mojave - PullRequest
0 голосов
/ 30 сентября 2018

CS студент, компиляция работала нормально, прежде чем перейти на Мохаве.После этого я не могу заставить что-либо работать, если оно имеет include статус.Например:

#include <iostream>
int main()
{
    std::cout << "length:" << 10 << std::endl;

    return 0;
}

При компиляции:

$ g++ -ferror-limit=3 main2.cpp -o test
In file included from main2.cpp:1:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/iostream:38:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/ios:216:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__locale:15:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/string:477:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/string_view:176:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__string:56:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/algorithm:642:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/utility:203:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cstdint:158:8: error: no member named 'uint8_t' in the global
      namespace
using::uint8_t;
     ~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cstdint:159:8: error: no member named 'uint16_t' in the global
      namespace
using::uint16_t;
     ~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cstdint:160:8: error: no member named 'uint32_t' in the global
      namespace
using::uint32_t;
     ~~^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
4 errors generated.

У меня есть

  • Установлен Xcode 10
  • Установлена ​​последняя командная строка разработчикаtools
  • Я нахожусь на gcc 8.2 (последняя версия brew предоставляет)
  • следовал советам здесь , которые включали запуск ...

    open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
    
  • Перезагрузка компьютера много раз

Из идей.Компиляция c ++ из Xcode напрямую работала.Но из командной строки g ++ неоднократно выходит из строя.Не уверен, куда идти дальше.

Если это актуально, это на MacBook Pro 15 ", 2018. MacOS 10.14.0.

Спасибо, что кто-нибудь уделил время.

Изменить:

Используя информацию здесь Я могу скомпилировать некоторые вещи, используя флаг

-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk

в моих g++ вызовах.

Конечно, я не хочу делать это вечно.

Я полностью удалил Xcode 10 и devtools, и после их переустановки проблема сохраняется.

Что еще мне следует сделать здесь«Как это повлияет только на меня?»

ЗАКЛЮЧИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ

Закончилась переустановка ОС для решения проблемы. Был большой молоток для тех, кто знает, насколько велик гвоздь, но он работал.

Ответы [ 2 ]

0 голосов
/ 16 января 2019

У меня была такая же проблема.

У меня были установлены заголовки в /Applications/.../MacOSX10.14.sdk/usr/include.Вместо того, чтобы использовать псевдонимы в моих вызовах g ++ для постоянного использования -isysroot, я добавил /Applications/.../MacOSX10.14.sdk/usr/include к своим CPLUS_INCLUDE_PATH.

Точная строка кода, которую я использовал и добавил к своему .bash_profile, была

export CPLUS_INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include

Я чувствую, что это более элегантное решение, поскольку из того, что я понимаю, используя isysroot или sysroot скажет g ++ не выполнять поиск в местах по умолчанию, когда вам могут понадобиться включения как из каталога Mac SDK, так и из обычных /usr/include, /usr/local/include и т. Д.

0 голосов
/ 30 сентября 2018

Я полагаю, что существует проблема с каталогами, поскольку компилятор не может найти файл заголовка iostream.h в текущем рабочем каталоге, и это может помочь Ошибка: "нет члена с именем 'uint8_t' в глобальномnamespace "на MacOS , хотя я не уверен.

...