10
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.

SwiftAdvent Calendar 2020

Day 11

エラーduplicate symbols for architecture x86_64の対処法

Last updated at Posted at 2020-12-10

はじめに

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というエラーが発生。
image.png
要約するとシンボルが3つ重なっていると言われています。

ん?
なんのこっちゃ?といった感じですw
image.png
ひとまず検索をかけたところ、古い記事が多く、問題解決に直結しそうな記事にはありつけませんでした...
こうなるとエラー文を読み解いていくしかないですね!

エラー文解析(仮説)

image.png
一度お茶🍵をしばき、シンボルが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は現役エンジニアとして成長した記事を投稿することを目標に精進します!

10
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
10
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?