繁体   English   中英

无法在 OS X Big Sur 上编译 c++,“ld: library not found for -lgcc_s.10.4”

[英]Cant compile c++ on OS X Big Sur, "ld: library not found for -lgcc_s.10.4"

将我的 MacBook Pro 升级到 OS X 11.1 Big Sur 后,我无法使用 gcc 编译 c++ 程序。

我将 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 自己访问它了。

任何关于如何解决这个问题的建议都非常受欢迎。 谢谢!

通常,gcc 往往不适用于更新版本的 Mac OS。 解决方案是使用 C/C++ 编译器中的构建。 要自动使用这些环境变量,而不是 GCC,请设置以下环境变量:

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

这将使用内置的 Mac 编译器。 一旦这样做,我还没有遇到不是由于正在编译的实际代码而导致的编译问题。

根据这个答案,您应该使用: g++-10 -o main main.cpp

  • MacOS中brew安装g++的正确路径是:
$ 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)

感谢您提供的所有答案,这些答案突出了可以解决问题的不同事物。 最终的工作是运行brew reinstall gcc ,并指向 CLion (或者像 Mike 提到的那样简单 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

此外,正如 Matt Braunstein 所提到的,可以使用 Mac OS X 随附的 clang,这是我在弄清楚如何解决 gcc 问题时所做的事情。

我对这个问题的想法是,不知何故,用自制软件安装 gcc 并没有安装所需的一切,因为它似乎已经从以前的版本安装, reinstall命令似乎纠正了这个问题。

再次感谢您提供帮助我找到此解决方案的答案以及可能的解决方法。

我花了几个小时试图用 cmake 解决这个编译问题, CMakeLists.txt中用于库链接的原始语句是!

link_directories(/usr/local/lib)
target_link_libraries(Program libsndfile.dylib)

制作后出现错误消息:

ld:找不到 -lsndfile 的库

有效的解决方案是像这样添加整个路径:

target_link_libraries(Program /usr/local/lib/libsndfile.dylib)

Ubuntu 中不需要这个,但不知何故新的 MacOS 需要它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM