はじめに
Qiita Advent Calendar初参加!
Advent Calendarの温度感を全くわからない状態で「これも挑戦」というメンタルだけで参加させてもらいましたw
お手柔らかにお願いします♪
環境
MacOS BigSur 11.0.1
Swift version 5.3.1
Xcode version 12.2
duplicate symbols for architecture x86_64エラー発生
リモートブランチからmasterブランチにマージをおこなったあとにビルドを実行するとduplicate symbols for architecture x86_64
というエラーが発生。
要約するとシンボルが3つ重なっている
と言われています。
ん?
なんのこっちゃ?といった感じですw
ひとまず検索をかけたところ、古い記事が多く、問題解決に直結しそうな記事にはありつけませんでした...
こうなるとエラー文を読み解いていくしかないですね!
エラー文解析(仮説)
一度お茶🍵をしばき、シンボルが3つ重なっている
という情報をヒントにエラー文を冷静に読み解いていくと気がかりなことが2点。
①赤帯エラー文の上にあるduplicate symbol '_pb_files_iter_find'
から始まるログ?が3件あるが、いずれも内容が同じだという点。この時点でシンボルが3つ重なっている
と濃い関係であることを仮説としてあげられる。
②duplicate symbol '_pb_files_iter_find'
からログを読み進めるとPods.build
というのが存在する。ここでpodに関するエラーである仮説が浮上する。
仮設検証
仮説①②をまとめるとpodに関する何かが3つ重複している
ということになる。
podに関することでできそうなことは2点。
①podをupdateして更新。
②podを一度全て削除して再度インストール。
①はすでに存在するpodをあくまでも更新するのみなので、得策である対処法は②なので実行してみる。
//podに関する3つのファイルをFinderから削除
Podfile
Podfile.look
Pods
//ターミナルで下記コマンドを実行してPodfileを改めて作成
$ pod init
//必要なpodをPodfileに記述して下記コマンドでinstall
$ pod install
これでpodのリセットができたのでビルドを実行すると解決できると思います!
原因
はっきりとしたことは分かりませんが、リモートブランチでマージをおこなった際にpodに関係する何かがうまく処理されず、今回の場合は関数が重複してしまった、ということになりそうですね。
duplicate symbols for architecture x86_64
エラーに関してはログを読んで、関係しているであろう何かを発見することで対処できそうですね!(まあ他もそうなんでしょうが...w)
最後に
今年は初めてQiitaさんとお会いし、アウトプット面で非常にお世話になりました!
ありがとうございます!
年内もしくわ年始には個人アプリの開発が完成しそうなので、その後転職活動を行う予定です。
来年のAdvent Calendarは現役エンジニアとして成長した記事を投稿することを目標に精進します!