LoginSignup
2
3

macOS環境にて、gccコンパイルが使えない

Last updated at Posted at 2023-10-28

本記事について

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 % 
2
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3