今天早上,在将macOS BigSur升级到11.1并将Xcode升级到12.3之后,我的MacPorts 2.6.4发行版开始出现问题。我再也不能用GNU C++ v10.2.0_4编译简单的C++程序了:
g++ -O3 -std=c++11 -c libvec.cpp
In file included from /opt/local/include/gcc10/c++/cmath:45,
from libvec.cpp:1:
/opt/local/lib/gcc10/gcc/x86_64-apple-darwin20/10.2.0/include-fixed/math.h:45:10: fatal error: sys/cdefs.h: No such file or directory
45 | #include <sys/cdefs.h>
| ^~~~~~~~~~~~~
compilation terminated.初步的互联网搜索表明,这个问题可能是由于与Xcode命令行工具不一致造成的。你能指导我如何调试和修复它吗?也许我需要在这样的升级之后重新安装MacPorts发行版?谢谢!
发布于 2020-12-17 01:04:31
这个问题确实是由从11.0到11.1的macOS更新和从12.2到12.3的Xcode更新引起的。苹果的新政策是在每次系统更新时增加SDK版本。与以前的MacPorts版本一起安装的SDK C++编译器现在由于此增量而失败。一种快速解决方法是将SDKROOT环境变量设置为与新版本号匹配:
export SDKROOT=`xcrun --show-sdk-path`为方便起见,请将此命令放入~/.profile文件中。可以在following thread on MacPorts邮件列表中找到详细的问题解释和解决方案。
https://stackoverflow.com/questions/65327697
复制相似问题