簡體   English   中英

GCC 不會在 macOS 上編譯任何東西

[英]GCC won't compile anything on macOS

最近(自從發布了 Catalina 並更新了 xcode,但我仍在運行 Mojave)我發現通過 macports 安裝的 gcc 已損壞。 我收到錯誤說系統包含找不到:

ld: library not found for -lSystem

我在這里嘗試過解決方案: 升級到 Mojave 后無法在 Mac 上編譯 C 程序- 但是當我安裝 macOS_SDK_headers_for_macOS_10.14.pkg 它實際上並沒有在 /Applications/Xcode.app/Contents/Developer/Platforms 中創建任何東西/MacOSX.platform/Developer/SDKs; 我在那里看到的只是 10.15 (Catalina) sdk!

如果我只是將 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) 上)

非常歡迎任何想法或建議 - 我真的很希望能夠 go 回到使用 gcc 編譯代碼!

僅供參考,我使用的是 gcc7(來自 macports),以與我的實際實時系統 linux 服務器保持一致,但我已經嘗試過 gcc 8 和 9 並獲得相同的結果。

cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/

sudo ln -s MacOSX10.15.sdk MacOSX10.14.sdk

好的,似乎如果我像上面那樣執行 ln -s,並且將 #include 移動為我所有文件中的第一個包含,問題就消失了。

這在我看來像是 Apple SDK 標頭中的一個嚴重問題,因為肯定不應該發生這樣的沖突定義......?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM