Не могу скомпилировать С++ в OS X Big Sur, ld: не найдена библиотека для -lgcc_s.10.4

После обновления моего MacBook Pro до OS X 11.1 Big Sur я не могу заставить работать компиляцию программ на С++ с использованием gcc.

Я использую CLion с CMake и получаю следующую ошибку при перезагрузке конфигурации CMake.

ld: library not found for -lgcc_s.10.4

То, что я пробовал, это установка Xcode, она установлена ​​без ошибок.

Я попытался создать символическую ссылку, как предлагается здесь https://github.com/Paxa/fast_excel/issues/33

$ cd /usr/local/lib
$ sudo ln -s ../../lib/libSystem.B.dylib libgcc_s.10.4.dylib

Оказывается, библиотеки libSystem.B.dylib нет. На некоторых сайтах упоминается, что библиотеки, начинающиеся с Big Sur, находятся в каком-то общем кеше, о котором я понятия не имею, что это такое и как получить к нему доступ, не говоря уже о том, чтобы сделать ld доступ к нему самостоятельно.

Любые предложения о том, как решить эту проблему, очень приветствуются. Благодарю вас!


person Jon Lachmann    schedule 16.12.2020    source источник


Ответы (3)


Как правило, gcc не работает в более поздних версиях Mac OS. Решение состоит в том, чтобы использовать сборку в компиляторах C/C++. Чтобы автоматически использовать их вместо GCC, установите следующие переменные среды:

CC="clang"
CXX="clang++"

Это будет использовать встроенные компиляторы Mac. Сделав это, я еще не сталкивался с проблемой компиляции, которая не была связана с фактическим компилируемым кодом.

person Matt Braunstein    schedule 28.12.2020

В соответствии с этим ответом вы должны использовать: g++-10 -o main main.cpp

  • Правильный путь к установленному brew g++ в MacOS:
$ which g++-10
> /usr/local/bin/g++-10
--
$ which g++ 
> /usr/bin/g++ //this is alias of clang (same for lyb)

Если вы используете файл CMakeLists.txt, вы настроите его следующим образом:

set(CMAKE_CXX_COMPILER "/usr/local/bin/g++-10" CACHE STRING "C compiler" FORCE)
set(CMAKE_C_COMPILER "/usr/local/bin/gcc-10" CACHE STRING "C++ compiler" FORCE)
set(CMAKE_CXX_STANDARD 17)
person Mike    schedule 29.12.2020

Спасибо за все ответы, подчеркивающие разные вещи, которые могут решить проблему. Что в итоге сработало, так это запустить brew reinstall gcc и указать CLion (или просто CMake, как упомянул Майк) для использования правильного компилятора (что-то, что я уже сделал, но я хочу упомянуть об этом здесь, если кто-то еще найдет этот вопрос и имеет то же самое проблема), пути, которые я использую,

/usr/local/Cellar/gcc/10.2.0/bin/gcc-10
/usr/local/Cellar/gcc/10.2.0/bin/g++-10

Эти пути на самом деле являются просто явными местоположениями, которые связаны с

/usr/local/bin/g++-10
/usr/local/bin/gcc-10

Кроме того, как упомянул Мэтт Браунштейн, можно использовать clang, поставляемый с Mac OS X, что я и сделал, выясняя, как решить мои проблемы с gcc.

Мои мысли о проблеме заключаются в том, что каким-то образом установка gcc с помощью homebrew не установила все необходимое, поскольку оно уже было установлено из предыдущей версии, команда reinstall, похоже, исправила это.

Еще раз спасибо за ответы, которые помогли мне найти это решение и возможные обходные пути.

person Jon Lachmann    schedule 29.12.2020