本記事について
MacBookにて、gccコンパイルが使用できなくなったので、その時に対処した方法について記載したいと思います。
実行環境
・macOS Sonoma 14.1
・Xcode 15.0.1
・gcc version 13.1.0 (Homebrew GCC 13.1.0)
・MacBook Pro 13インチ M2
問題概要
上記の実行環境にて、gccコンパイラでコンパイルしようとすると、下記のようなエラーが発生する。
Google先生で調査した限りでは、どうやらXcode 15とHomebrew GCCの相性が良くないため、このような重複したライブラリを無視したという警告エラーが起きているらしい。
*2023年10月28日(土)時点においても、XcodeもしくはHomebrew GCCが改善される見込みはない…
Homebrew GCC 13.2.0にアップグレードした結果、本不具合が解消された事を確認済み。(2023年11月25日(土)時点)
domdam007@MacBook-Pro test20221106 % make
g++ -g --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk main.cpp -o test
-macosx_version_min has been renamed to -macos_version_min
ld: warning: ignoring duplicate libraries: '-lgcc'
0 0x100f03648 __assert_rtn + 72
1 0x100e37fac ld::AtomPlacement::findAtom(unsigned char, unsigned long long, ld::AtomPlacement::AtomLoc const*&, long long&) const + 1204
2 0x100e4d924 ld::InputFiles::SliceParser::parseObjectFile(mach_o::Header const*) const + 15164
3 0x100e5ae30 ld::InputFiles::parseAllFiles(void (ld::AtomFile const*) block_pointer)::$_7::operator()(unsigned long, ld::FileInfo const&) const + 420
4 0x180e23950 _dispatch_client_callout2 + 20
5 0x180e36ba0 _dispatch_apply_invoke + 176
6 0x180e23910 _dispatch_client_callout + 20
7 0x180e353cc _dispatch_root_queue_drain + 864
8 0x180e35a04 _dispatch_worker_thread2 + 156
9 0x180fcd0d8 _pthread_wqthread + 228
ld: Assertion failed: (resultIndex < sectData.atoms.size()), function findAtom, file Relocations.cpp, line 1336.
collect2: error: ld returned 1 exit status
make: *** [all] Error 1
解決方法
2023年10月28日(土)時点において、もしHomebrew GCCでコンパイルしたいならば、Xcode 15未満を使用するしかない!!
本ページでは、複数バージョンのXcodeを共存させた方法について、記載します。
1)過去バージョンのXcodeをDL
下記のURLから、Xcode 14.3.1以前のXcodeをDLします。
https://developer.apple.com/downloads/
2)DLしたXipファイルを解凍
DLしたXipファイルをダブルクリックして、解凍します。
解凍が終わると、Xcode.app
が生成されます。
あとで他のXcodeと区別がつき易いよう、私はXcode.app
からXcode_14.3.1.app
にリネームしました。
3)Applicationフォルダへ移動
ApplicationフォルダへリネームしたXcode_14.3.1.app
を移動させます。
4)xcode-selectコマンドによる切り替え
xcode-select
コマンドを用いて自分が使用したいXcodeを選択します!
domdam007@MacBook-Pro test20221106 % sudo xcode-select --switch /Applications/Xcode_14.3.1.app
Password:
domdam007@MacBook-Pro test20221106 %
このようにXcodeのバージョンをHomebrew GCCが使用できたバージョン14.3.1に切り替える
ことで、Homebrew GCCを用いたコンパイルが再び可能
になります。
domdam007@MacBook-Pro test20221106 % make
g++ -g --sysroot=/Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk main.cpp -o test
domdam007@MacBook-Pro test20221106 %