1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

macでg++コンパイル時Assertion failedが出たらXcodeのアップグレードorダウングレード

Last updated at Posted at 2022-11-11

問題

macでg++を利用していて、OSのバージョンを12に変更した後以下のようなエラーが出ることがありました。(追記:2023/10/30 Xcodeのバージョンアップで度々似たようなエラーが起こるのでxcode-selectのダウングレード方法を追加)

$  g++ -std=c++17 -Wall -Wextra -I .  code.cpp -o a.out
0  0x1029c41a0  __assert_rtn + 140
1  0x10284ba8c  mach_o::relocatable::Parser<arm64>::parse(mach_o::relocatable::ParserOptions const&) + 4536
2  0x10281dd38  mach_o::relocatable::Parser<arm64>::parse(unsigned char const*, unsigned long long, char const*, long, ld::File::Ordinal, mach_o::relocatable::ParserOptions const&) + 148
3  0x1028864ac  ld::tool::InputFiles::makeFile(Options::FileInfo const&, bool) + 1468
4  0x102889360  ___ZN2ld4tool10InputFilesC2ER7Options_block_invoke + 56
5  0x1b8dc01f4  _dispatch_client_callout2 + 20
6  0x1b8dd4f8c  _dispatch_apply_invoke_and_wait + 224
7  0x1b8dd426c  _dispatch_apply_with_attr_f + 1152
8  0x1b8dd447c  dispatch_apply + 108
9  0x1028891f4  ld::tool::InputFiles::InputFiles(Options&) + 616
10  0x10280b6c0  main + 552
A linker snapshot was created at:
        /tmp/a.out-2022-11-10-221006.ld-snapshot
ld: Assertion failed: (_file->_atomsArrayCount == computedAtomCount && "more atoms allocated than expected"), function parse, file macho_relocatable_file.cpp, line 2061.
collect2: error: ld returned 1 exit status

エラーが出るコード(例)

code.cpp
#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)

int main(){
  int n; cin >> n;
  map<int,vector<int>> mp;
  rep(i,n){
    mp[i].push_back(i);
  }
  for(auto &p:mp){
    for(auto &q:p.second){
      cout << q << endl;
    }
  }
}

環境

macOS Monterey 12.6.0
xcode-select 14.0.0.0.1.1661618636

注意事項

ここではXcodeをインストールしておらず、xcode-selectのみをインストールしていることを想定しています。

xcode-selectのアップグレードで解決

xcode-selectのアップデートが来ている場合はmacのシステム設定からアップデートを試してみましょう。

xcode-selectのダウングレードで解決

xcode-selectを削除した後公式サイトからバージョンを指定してインストールします。

xcode-selectのパスの確認(参考 https://srcw.net/archives/794/)

xcode-select -p

# 単体のCommand Line Toolsの場合
/Library/Developer/CommandLineTools

# Xcodeの場合
/Applications/Xcode.app/Contents/Developer

xcode-selectの削除

# 単体のCommand Line Toolsの場合
sudo rm -rf /Library/Developer/CommandLineTools

# Xcodeの場合
sudo rm -rf /Applications/Xcode.app/Contents/Developer

xcode-selectのバージョンを指定して再インストール
下のApple Developerからバージョンを指定してインストールしてください。

参考

1
3
0

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?