OS X 10.11.6で実行されているXcode 8ベータ版を使用してこれに遭遇しました.さまざまな特定の問題がありましたが、これをデバッグする方法はすべての場合で同じです.
このotool
コマンドを使用すると、リンカがライブラリ ファイルを検索するように指示された場所とその名前を正確に確認できます。
私にとっては、10.12 (Sierra) で導入されたotool -l {executable_path}
ファイルを探していることがわかりました。/System/Library/PrivateFrameworks/swift
私は10.11.6を実行しているので、これはショーストッパーです. (および Xcode 8 ベータ版の既知のバグ)
出力を見ると、次のotool
2 つのことがわかります。
LC_LOAD_DYLIB
含めるライブラリの名前を表示するコマンド。
load コマンドは、ファイルへの絶対パスを表示するか、ファイルの@rpath/
検索に使用されるショートカットをプレフィックスとして付けることができます。
LC_RPATH
で始まるライブラリ名の検索パスを示します@rpath/
。
ビルド設定のフィールドにLC_RPATH
含めることで、を変更できます (再度コンパイルするための一時的な回避策として)。私にとっては、.rpath ではなく、適切な SDK のファイル内のライブラリ ファイルへの rpath を設定することを意味していました。これを行うことは、多くの理由で危険をはらんでいます。そのため、元に戻すことを忘れないでください。-rpath {absolute_path_to_files}
Other Linker Flags
/System
ビルド階層に問題があるだけの場合は、より軽いアプローチを使用できます。を使用otool
すると、実際に何が起こっているかを確認できるため、Runpath Search Paths
ビルド設定をインテリジェントに変更して、1 つまたは 2 つのディレクトリにジャンプし、それがリンカーの出力にどのように影響するかを確認できます。