最近(自从Catalina发布,xcode更新,但我仍然在运行Mojave),我发现通过macports安装的gcc已经坏了。我收到错误,说系统包含的内容找不到:
ld: library not found for -lSystem我在这里尝试过解决方案: sdk --但是当我安装sdk时,它实际上并没有在/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs中创建任何东西;我看到的只是10.15 ( Can't compile C program on a Mac after upgrade to Mojave ) macOS_SDK_headers_for_macOS_10.14.pkg!
如果我只是sym链接MacOSX10.14.sdk到MacOSX10.15.sdk (可能不是一个好主意),我会得到一组不同的错误:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/wchar.h:90,
from /opt/local/include/gcc8/c++/cwchar:44,
from /opt/local/include/gcc8/c++/bits/postypes.h:40,
from /opt/local/include/gcc8/c++/iosfwd:40,
from /opt/local/include/gcc8/c++/ios:38,
from /opt/local/include/gcc8/c++/ostream:38,
from /opt/local/include/gcc8/c++/iostream:39,
from /Users/pae9/soft/src/cmake/LIGO_support/restrictHealMap.cpp:4:
/opt/local/lib/gcc8/gcc/x86_64-apple-darwin18/8.3.0/include-fixed/stdio.h:222:7: error: conflicting declaration of 'char* ctermid(char*)' with 'C' linkage
char *ctermid(char *);换句话说,现在看起来macports报头与xcode报头冲突。
我以前从来没有遇到过问题;我认为这个问题可以追溯到上一次xcode更新(目前是版本11.2 (11B52))
任何想法或建议都非常受欢迎-我真的很希望能够回到使用gcc编译代码的工作中来!
仅供参考,我使用的是gcc7 (来自macports),为了与我实际的实时系统linux服务器保持一致,但我已经尝试了gcc 8和9,并得到了相同的结果。
发布于 2019-11-07 23:47:20
cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
sudo ln -s MacOSX10.15.sdk MacOSX10.14.sdk
发布于 2019-11-08 01:49:51
好的,看起来如果我像上面那样做ln -s,并且把#include移到我所有文件中的第一个include,这个问题就解决了。
在我看来,这是Apple SDK头文件中的一个严重问题,因为像这样的定义冲突肯定不会发生……?
https://stackoverflow.com/questions/58751423
复制相似问题