2

私はMacOSXにまったく慣れていません。新しいMacBookProR15 Retina Editionを購入した主な理由は、CUDAAPIの勉強を始めるためです。

しかし、プロジェクトをビルドできません。

たとえば、新しいCUDAプロジェクトを作成するときは、プロジェクトプロパティに移動し、次の変更を加えます。

C / C ++ / Objective-C用のコンパイラ:LLVM GCC 4.2

その他のリンカーフラグ:-lcuda、-lcudart

ヘッダー検索パス:/ usr / local / cuda / include

ライブラリ検索パス:/ usr / local / cuda / lib

コードに必要なライブラリを追加し始めると、すべてが正常に実行されます。私のコードは入力エラーを受け取りません。

プロジェクトをビルドすると、リンクエラーが発生します(パスが短くなり、メッセージが読みやすくなるように分割されています)。

Ld / my_test_project / Build / Products / Debug / test normal x86_64 cd / Users / Admin / Documents / test setenv MACOSX_DEPLOYMENT_TARGET 10.7 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++

-arch x86_64

-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk

-L / my_test_project / Build / Products / Debug

-L / usr / local / cuda / lib -F / my_test_project / Build / Products / Debug

-ファイルリスト/my_test_project/Build/Intermediates/test.build/Debug/test.build/Objects-normal/x86_64/test.LinkFileList

-mmacosx-version-min = 10.7

-lcudart

-lcuda

-o / my_test_project / Build / Products / Debug / test

ld:ファイルが見つかりません:アーキテクチャx86_64の@ rpath / CUDA.framework / Versions / A / CUDA clang:エラー:リンカーコマンドが終了コード1で失敗しました(呼び出しを確認するには-vを使用してください)

奇妙なことに、説明されているパスに移動すると、CUDA実行可能ファイルが表示されます。ファイルがあります!

ライブラリを使用するcuComplex.hを使用すると、すべての数式(log、cos、sinなど)は「未定義の変数」になります。ただし、cuComplex.hライブラリにはライブラリが含まれています。

ドライバー、SDK、ツールキットは適切にインストールされており、すべてが魅力のように機能します。SDKの例を機能させることができます。しかし、すべてを機能させるための詳細が欠けていると思います。

4

4 に答える 4

6

MountainLionにインストールされているCUDA5.0とXcode4.4.1でも同じ問題が発生します。その理由は、libcuda.dylibがCUDA.frameworkをrpathにリンクしているためです。これは、otoolで検査できます。

otool -L /usr/local/cuda/lib/libcuda.dylib
/usr/local/cuda/lib/libcuda.dylib:
/usr/local/cuda/lib/libcuda.dylib (compatibility version 1.1.0, current version 5.0.17)
@rpath/CUDA.framework/Versions/A/CUDA (compatibility version 1.1.0, current version 5.0.17)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.0)

ただし、Xcodeは/ Library/Frameworksの下のCUDA.frameworkを認識していないようです。理由は不明です。プロジェクトに自分で追加する必要があります。

プロジェクトのプロパティページで、[ビルドフェーズ]->[ライブラリとのリンク]をクリックします。CUDA.frameworkを選択します。リストに表示されない場合は、「その他追加」を使用して追加してください。このようにして、リンクを取得します。

Makefileを作成している場合は、これを追加して、リンク段階を完全に自動化する必要があります。

-F/Library/Frameworks -framework CUDA
于 2012-08-11T10:23:34.990 に答える
0

私のセットアップでうまくいった別の方法として、libcuda のパスを次のように変更します。

sudo install_name_tool -change @rpath/CUDA.framework/Versions/A/CUDA \
    /Library/Frameworks/CUDA.framework/CUDA \
    /usr/local/cuda/lib/libcuda.dylib

いつものように、sudo コマンドが何をするのか理解できない場合は、端末に貼り付けないでください。

于 2014-12-16T17:59:33.010 に答える
0

Xcode 6.1 を使用して、OS X 10.10 で CUDA 6.5 の例をコンパイルする際にも同じ問題が発生しました。この問題は、Makefile に次の行が含まれている例で発生しました。

ALL_LDFLAGS += -Xlinker -framework -Xlinker CUDA

修正は、リンカーに /Library/Frameworks について伝えることでした。そのため、上記は 2 行に置き換えられました。

ALL_LDFLAGS += -Xlinker -F/Library/Frameworks
ALL_LDFLAGS += -Xlinker -framework -Xlinker CUDA

おそらくあなたの質問はこの時点で答えられていますが、このページはほぼ文字通り「ld:framework not found CUDA」の唯一の Google 検索結果であり、他の人の時間を節約できることを願っています。

于 2014-12-16T22:14:26.120 に答える