2017-12-14 9 views
-1

は最近問題に出くわしたlcudnnサーバー上のカフェをコンパイルし、/usr/bin/ld: cannot find -lcudnn を求められたときに、私はroot priviledgeを持っていないので、見つけることができない、私は私のHOMEディレクトリにCUDA-8.0を設置しました、そして、libcudnn7-devをダウンロードして、手動でのdeb PKGを抽出するためにdpkg-deb -xv libcudnn-dev*.debを行い、その後、私はlibディレクトリに移動し、その後、LD_LIBRARY_PATH~/cuda/lib64を追加し、~/cuda/lib64に生成されたlibcudnn.soをコピーし、ar -x libcudnn*.agcc -shared *.o -o libcudnn.soを実行しますが、エラーが要求されます私はこれを解決する方法を知らない、誰かを助けることができますか?コンパイルカフェは:

そして、それは/usr/bin/ld: cannot find -lcudnnである理由私はLD_LIBRARY_PATH/=: cannot find -lcudnn

EDITのようなものではなく、理解していない: 私は.tgzというファイルをダウンロードしてcudnnをインストールするためのインストールガイドの指示に従いますが、それはまだ、エラーを促し、私の〜/ .bashrcには設定されています。

export CUDA_HOME="~/cuda" export PATH="/home/wangtao/anaconda2/bin:$CUDA_HOME/bin:$PATH" export LD_LIBRARY_PATH="$CUDA_HOME/lib64:$LD_LIBRARY_PATH"

私は/etc/ld.so.confはこのようなものです見つける:

include /etc/ld.so.conf.d/*.conf /usr/local/cuda-7.0/lib64 それは~/cuda/lib64の私の希望パスではありませんが、私は、サーバー上のルートpriviledgeを持っていないので、それを修正する方法がわからないが、私はローカルマシン上で正常にコンパイルしているが、これは難しいように思わ

+2

あなたは何をしたのか、なぜそれがわかりません。 developer.nvidia.comからCUDNNをダウンロードし、そこの指示に従ってインストールしてください。次に、リンクできる適切なlibcudnnがあります。 '.so'ライブラリを作るために' ar'や 'gcc'を使う必要はありません。まだ登録していない場合は、登録済みの開発者としてサインアップする必要があります。リンクするとき、リンカは '/ usr/bin/ld'です。その理由はあなたがそのメッセージを受け取っている理由です。 'LD_LIBRARY_PATH'は実行時の動的リンカ/ローダシステムと関係があり、コンパイル時のリンクには関係しません。 –

+0

ありがとうございます。私は標準のインストール手順に従っていません。なぜなら、root権限なしにインストールすることができないdeb pkgが含まれているからです。 '/ usr/bin/ld'にあるリンカがそれを見つけることができるように' libcudnn.so'の ' '/ etc/ld.so.conf'はどこですか?(しかし、私はそれを変更するためにroot権限を持っていません) –

+2

これを行うにはルート権限は必要なく、debパッケージは必要ありません。 [ダウンロードページ](https://developer.nvidia.com/rdp/cudnn-download)にアクセスし、[cudnn library for linux]を入手してください(https://developer.nvidia.com/compute/machine-learning/cudnn /secure/v7.0.5/prod/9.0_20171129/cudnn-9.0-linux-x64-v7)(debではありません)、インストールガイドの指示、特に「tarファイルからのインストール」のセクションに従います –

答えて

-1

私たちの初心者はもっと学ぶ必要があります。たぶん、他の人があなたを助けてくれることはなく、自分自身を助け、もっと学びます! リンクはダイナミックローディングとは異なることが判明しました。ダイナミックローディングを実行する前にリンクされています。LD_LIBRARY_PATHが影響を与えることができるのはダイナミックローディングで、これはライブラリファイルのパスを与えます(例えば.so.1.0ではなく.so.1.0のシンボリックリンクです)。リンカーはローダーではないので)libcudnn.soのパスをLD_LIBRARY_PATHに追加すると、/usr/bin/ldはリンカーがcudnnライブラリーを見つけることができないと文句を言うので、libcudnn.soというパスをリンカーに追加する必要があります。これは何ですか?LIBRARY_PATHちょうどそれをそれに追加して、リンカがそれを見つけることができます、時には我々は正しい方向にではありません、迷惑をかけない、もっと学ぶ:)

+0

root特権では、インストールとコンパイルの種類は非常に簡単ですが、私の場合は特権がありません –