9

最近、新しい XCode にアップグレードしました。アップグレードした後、一部のアプリがビルドされません。次のエラーが表示されます。

ld: cannot link directly with /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/system/libcommonCrypto.dylib.  Link against the umbrella framework 'System.framework' instead. for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

私はすべてを試しました-クリーニング、再インポート、アーキテクチャの変更...

助けてください

4

5 に答える 5

17

上記の両方を試した後、どちらもうまくいかなかったので、この問題を別の方法で解決しました。

問題は、最初に検索していたメイン インターフェイス (メイン ビルド設定など) からライブラリを追加していたときにcrypto、2 つのライブラリが戻ってきlibcorecrypto.dylibliblibcommonCrypto.dylib、気づいたら、通常とは異なり、両方とも灰色で存在することでした。通常追加する黄色のライブラリ。これらを追加すると、コンパイラがレポートを返します (libz などの他のライブラリが不足している場合や、より多くの機能を実行するために必要になる別のライブラリが不足している場合があります。

JavaScriptCore.framework上記の 2 つのライブラリが通常はライブラリ (黄色のライブラリ) の下にあることに気付いた場合、上記の 2つを削除してJavaScriptCore.framework代わりに追加することで、問題は解決されbuild successful

また、gray-libs が 内JavaScriptCore.frameworkにバンドルとして存在することに基づいて、上記のように libcrypto とその他の libcrypto は の下には存在し/Library/.../system/pathません。つまり、システムからそれらを削除していないため、そこに存在しません。

繰り返しますが、解決策は次のとおりです。

*メインの XCODE プロジェクト設定から、追加しないでください: *dd

libcorecrypto.dylib 
liblibcommonCrypto.dylib

代わりに、次を追加します。

JavaScriptCore.framework

.m (コード) では、次のようにして通常どおりにソースします。

#include <CommonCrypto/CommonDigest.h> (or any of your other libs as needed in code)...

それはうまくいくはずです。

これが役立つことを願っています。

敬具

于 2013-11-06T09:39:41.617 に答える
3

私はこれを次のように解決しました:

libcommonCrypto.dylib エラーは、ニシンであることがわかりました。

上記のように libcommonCrypto.dylib を削除した後、9 つの新しいエラーが発生しました。一見、Crypto エラーだと思いましたが、実際にはそうではありませんでした。私にとっては、実際には zLib が含まれていないことにまでさかのぼります。これは、実装全体のより深い部分に「インポート」されました (暗号はその一部です)。

具体的には、ASIDataDecompressor.h、#import < zlib.h> までさかのぼります。

不足している libz.dylib フレームワークを含めることで修正しました。最終的に、明示的に libcommonCrypto.dylib を含める必要はありませんでした。

そのため、libcommonCrypto を切り替えた後は必ずエラーを注意深くチェックし、代わりにその他のライブラリが欠落していないことを確認してください。

于 2013-04-16T20:49:27.663 に答える
0

私は同じエラーがありました、

ld: in '/usr/lib/system/libcommonCrypto.dylib', missing required architecture arm64 in file /usr/lib/system/libcommonCrypto.dylib (2 slices) for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

$PATH を確認することで、この問題を解決しました。不足しているファイルでした

使用するfind / -type f -name libcommonCrypto.dylib

私のライブラリを友人の Mac システムと比較すると、このファイルが私のコンピューターに存在しなかったことがわかります。

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/system/libcommonCrypto.dylib

$PATH フォールバックを使用する Xcode/usr/lib/system/libcommonCrypto.dylibですが、ビルドが適切ではありません (アームの代わりに i386)。

友人のバージョンをコピーして引っ越して/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/system/から、プロジェクトを再び構築することができました。

ここには悪質な問題があります。これは、アーキテクチャに応じてこの lib に同じファイルがたくさんあり、それらのほとんどが ios ビルドに使用されることを意図していないためです。ただし、専用ディレクトリにファイルが見つからない場合、 $PATH 環境変数は /usr/lib にフォールバックします。

Xcode のフォールバックがオンになって/usr/lib/system/libcommonCrypto.dylibいますが、これは間違いなく正しいライブラリではありません。これは、ios 用にビルドされたものではなく、私の mac 用にビルドされたものです。

于 2014-10-03T13:42:42.870 に答える
0

libcommonCrypto.dylibを削除し、SystemConfiguration.framework を追加することで置き換えてください

于 2015-03-17T10:41:22.523 に答える
0

ライブラリ管理にココアポッドを使用しています。ライブラリの 1 つ (ワークスペースで簡単に検索できます) には、CommonCrypto.framework への参照が含まれていました。これは、プロジェクト設定のフレームワークのリストで赤でした。

私の場合、CommonCrypto.framework への依存関係を削除する必要がありましたが、この解決策はポッドの別の更新まで続きます。

ところで、Podfile 内のライブラリ間の依存関係のグラフを一覧表示するコマンドを知りたいです。

于 2014-04-08T17:48:11.500 に答える