2011-12-15 9 views
1

ldコマンドで-lGLという共有ライブラリをコンパイルしています。しかし、それは私のシステム上でlibGL.soを見つけることができません。 Nvidiaパッケージは、ライブラリパスを正しく設定しました。/etc/ld.so.conf.d/ldconfig -p | grep libGL.soの でも出力がそれを見つけた:へ-lGLが見つかりません。シンボリックリンクなしでどうやったらいいですか?

  1. リンクNVIDIA libGL.so:私はそれにリンクできるようにすることはほとんどどこにでも読ん

    libGL.so.1 (libc6,x86-64) => /usr/lib/nvidia-current/libGL.so.1 
    libGL.so.1 (libc6) => /usr/lib32/nvidia-current/libGL.so.1 
    libGL.so (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/libGL.so 
    libGL.so (libc6,x86-64) => /usr/lib/nvidia-current/libGL.so 
    libGL.so (libc6, OS ABI: Linux 2.4.20) => /usr/lib32/libGL.so 
    libGL.so (libc6) => /usr/lib32/nvidia-current/libGL.so 
    

    、私は基本的に2つのソリューションを持っています標準の/ usr/libの場所です。 openglライブラリをコンパイルしようとする人にとっては、それは間違っているようです。なぜリンカーはldconfigキャッシュを使用していないのですか?

  2. -L/usr/lib/nvidia-currentをライブラリ検索パスに手動で追加します。繰り返しますが、間違って、どのようにライブラリがすべてのシステム上で見つかる可能性があるすべてのパスを知ることができますか?

だから私の本当の問題は:標準の場所にないライブラリとリンクするが、場所はすでに/etc/ld.so.confに登録するための標準的な自動アプローチとは何ですか?

+0

なぜこのタグ付きのPythonですか? – mkb

+0

申し訳ありませんが、私はPythonの拡張機能をやっています。タグを削除します。 – tito

答えて

1

/etc/ld.so.confは、実行時に共有ライブラリを解決するために、/lib/ld.soによって使用されます。コンパイル時にリンクするものとは関係ありません。

libGL.so/usr/lib/x86_64-linux-gnu/にリンクするだけで、アプリケーションは実行時にnvidiaのlibGL.soを使用します。これは問題ではありません。なぜなら、OpenGLインターフェイスは安定していて、シンボルは両方のライブラリで同じです。異なる実装です。

+0

標準Linuxになっていますので、自分自身で-L/usr/lib/x86_64-linux-gnuを追加する必要がありますか?他のプラットフォームはどうですか? (32ビット、および他のLinux?)何もありません? – tito

+0

通常のLinuxマシンでは、32ビットバージョンは '/ usr/lib'にあり、64ビットバージョンは'/usr/lib64'にあります – ismail

+0

はい、自動的に見つかりましたが、これは十分ではありませんlibgl(ところで、/ usr/lib32/usr/lib?) – tito

関連する問題