Установленные gcc и g ++ на Mac mojave не работают (brew install) - PullRequest
0 голосов
/ 31 октября 2019

Я установил gcc от brew на Mac OS mojave, но оба gcc и g ++ не работают.

Я попытался скомпилировать ниже простой код с помощью g ++, но я получил сообщения об ошибках.

ЭтоПрограмма может быть скомпилирована правильно по умолчанию Clang, поэтому мне интересно, есть ли какая-либо ошибка ссылки библиотеки. Но я не уверен.

Я получил ту же ошибку в случае gcc.

#include <iostream>
using namespace std;

int main(){
    int i;
    cin >> i;
    cout << i * 2 + 1 << endl;
} 

ld: предупреждение: игнорирование файла / Library / Developer / CommandLineTools / SDKs / MacOSX.sdk / usr / lib / libSystem.tbd, файл был создан для неподдерживаемого формата файла (0x2D 0x2D 0x2D 0x20 0x21 0x74 0x61 0x70 0x69 0x2D 0x74 0x62 0x64 0x2D 0x76 0x33), который не является связываемой архитектурой (x86 /64):Developer / CommandLineTools / SDKs / MacOSX.sdk / usr / lib / libSystem.tbd Неопределенные символы для архитектуры x86_64: «___cxa_atexit», на которые ссылаются из: __static_initialization_and_destruction_0 (int, int) в ccEBCemd.o ld: для архитектуры не найдено для символа (не)x86_64 collect2: ошибка: ld вернул 1 состояние выхода

g ++ -v говорит

Использование встроенных спецификаций. COLLECT_GCC = g ++ COLLECT_LTO_WRAPPER = / usr / local / Cellar / gcc / 9.2.0_1 / libexec / gcc / x86_64-apple-darwin18 / 9.2.0 / lto-wrapper Цель: x86_64-apple-darwin18 Настроено с помощью: ../configure --build = x86_64-apple-darwin18 --prefix = / usr / local / Cellar / gcc / 9.2.0_1 --libdir = / usr / local / Cellar / gcc / 9.2.0_1 / lib / gcc / 9 --disable-nls --enable-check = release --enable-languages ​​= c, c ++, objc, obj-c ++, fortran --program-суффикс = -9 --with-gmp = / usr / local / opt / gmp --with-mpfr = / usr / local / opt / mpfr --with-mpc = / usr / local / opt / libmpc --with-isl = / usr / local / opt / isl --with-system-zlib --with-pkgversion = 'Homebrew GCC 9.2.0_1' --with-bugurl = https://github.com/Homebrew/homebrew-core/issues --disable-multilib --with-native-system-header-dir = / usr / include --with-sysroot = / библиотека/Developer/CommandLineTools/SDKs/MacOSX.sdk Модель потока: posix gcc версия 9.2.0 (Homebrew GCC 9.2.0_1) `

Спасибо.

1 Ответ

0 голосов
/ 04 ноября 2019

В заключение, ошибка решена путем обновления Xcode. Спасибо за вашу помощь.

Как вы прокомментировали, я попытался g++ --sysroot=/ -o test test.cpp, затем я получил новую ошибку, такую ​​как

фатальная ошибка: wchar.h: такого файла нетили каталог #include ^ ~~~~~~~~

Также я попытался скомпилировать код, имеющий только int main(){} без какой-либо библиотеки. Затем это удалось.

Из этого я понял, что есть проблема, связанная со стандартной библиотекой. Эта проблема иногда возникала при обсуждении в Не удается скомпилировать программу C на Mac после обновления до Mojave .

В любом случае, решение этой проблемы, по-видимому, заключается в обновлении или переустановке Xcode или gcc. .

Спасибо!

...