先日、XcodeをXcode 8.0にアップグレードしました。
その後Homebrewで何かのパッケージをインストールしようとすると以下のようなエラーが出てしまいました。
その対処方法をメモしておきます。
ld: unexpected token: !tapi-tbd-v2 file '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/lib/libSystem.tbd' for architecture x86_64clang: error: linker command failed with exit code 1 (use -v to see invocation)error: command 'clang' failed with exit status 1原因と対処方法
XcodeのCommand Line Toolsが正しくセットされていないことが原因でした。
Xcodeを起動し、Command(⌘)キーとカンマ(,)キーの同時押しで設定を開きます。
Locationsのタブを開き、Command Line Toolsを「Xcode8.0 (8A218a)」に設定します。

以上です。
この設定によりCommand Line Toolsがきちんと指定され、Homebrewでもエラーが出なくなりました。
xcode-selectを使ってPathを確認してみると、確かに先ほどの設定画面で指定したディレクトリが指定されています。
Mac:~ $ xcode-select -p/Applications/Xcode.app/Contents/DeveloperMac:~ $ which clang/usr/bin/clangMac:~ $ which ld/usr/bin/ldMac:~ $ clang -vApple LLVM version 8.0.0 (clang-800.0.38)Target: x86_64-apple-darwin15.6.0Thread model: posixInstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/binMac:~ $ ld -v@(#)PROGRAM:ld PROJECT:ld64-274.1configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em (tvOS)LTO support using: LLVM version 8.0.0, (clang-800.0.38)TAPI support using: Apple TAPI version 1.30エラー詳細
Xcodeのバージョンを8.0にアップグレードしてからcmakeやclangでエラーが出るようになってしまいました。
そのため、Homebrewで何らかのパッケージをインストールしようとするとエラーが出てしまっていたようです。
参考までにpygameをインストールしようとした際のエラーの全文を貼り付けておきます。
Mac:~ $ brew install pygame==> Installing pygame from homebrew/python==> Cloning https://bitbucket.org/pygame/pygameUpdating /Users/tiryoh/Library/Caches/Homebrew/pygame--hg==> Checking out revision faa5879a7e6bfe10e4e5c79d04a3d2fb65d74a62==> cat Setup_Darwin.in >> Setup==> python -c import setuptools... --no-user-cfg install --prefix=/usr/local/Cellar/pygame/1.9.2a0 --single-version-externally-manLast 15 lines from /Users/tiryoh/Library/Logs/Homebrew/pygame/02.python:copying examples/scroll.py -> build/lib.macosx-10.11-intel-2.7/pygame/examplescopying examples/sound.py -> build/lib.macosx-10.11-intel-2.7/pygame/examplescopying examples/sound_array_demos.py -> build/lib.macosx-10.11-intel-2.7/pygame/examplescopying examples/stars.py -> build/lib.macosx-10.11-intel-2.7/pygame/examplescopying examples/testsprite.py -> build/lib.macosx-10.11-intel-2.7/pygame/examplescopying examples/vgrade.py -> build/lib.macosx-10.11-intel-2.7/pygame/examplesrunning build_extbuilding 'pygame.imageext' extensioncreating build/temp.macosx-10.11-intel-2.7creating build/temp.macosx-10.11-intel-2.7/srcclang -fno-strict-aliasing -fno-common -dynamic -arch i386 -arch x86_64 -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -Ddarwin -DENABLE_NEWBUF=1 -I/usr/local/opt/sdl/include/SDL -I/usr/local/opt/sdl_image/include/SDL -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/imageext.c -o build/temp.macosx-10.11-intel-2.7/src/imageext.oclang -bundle -undefined dynamic_lookup -arch i386 -arch x86_64 -Wl,-F. build/temp.macosx-10.11-intel-2.7/src/imageext.o -lSDL -lSDL_image -lpng -ljpeg -o build/lib.macosx-10.11-intel-2.7/pygame/imageext.sold: unexpected token: !tapi-tbd-v2 file '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/lib/libSystem.tbd' for architecture x86_64clang: error: linker command failed with exit code 1 (use -v to see invocation)error: command 'clang' failed with exit status 1
READ THIS: https://git.io/brew-troubleshootingIf reporting this issue please do so at (not Homebrew/brew): https://github.com/Homebrew/homebrew-python/issues
These open issues may also help:pygame might need upgrading (1.9.2b6) https://github.com/Homebrew/homebrew-python/issues/322参考サイト
Compilation fails with Xcode 8 |Adobe Communityhttps://forums.adobe.com/thread/2214483
関連記事
- (Updated )MacにGeanyをインストールする方法(詳細版)前回、WinodwsにGeanyをインストールする方法(詳細版)を紹介しました。
- (Updated )Xcodeでmbedのプロジェクトをビルドする方法Xcodeでmbedのプロジェクトをオフラインビルドする方法のメモ。
- TurtleBot3 + Gazebo + Navigation2 (ROS 2 Jazzy)ROS 2 JazzyでGazebo(旧Ignition)上のTurtleBot3をNavigation2(Nav2)を動かすまで+その過程で調べたことのメモです。
- (Updated )Ubuntuで一時的に容量の小さい仮想ストレージを作成する方法ディスク容量がいっぱいになったときのソフトウェアの挙動を確認したい場合などに、一時的に容量の小さい仮想ストレージを作成する方法のメモです。調べた際にちょうどいい方法がうまくヒットしなかったのでメモします。
- (Updated )CHAMPをROS 2 Humbleへアップグレードした際にやったこと4脚ロボット制御用のROSパッケージであるCHAMPを、ROS 2 Humbleに対応させるためにPull Requestを作成しました。その際に遭遇した内容については、その他のROS 2パッケージにおいてもROS 2 GalacticからROS 2 Humbleに移行する際に影響する可能性がありそうなので共有します。