2

Ubuntu OS で C++ で SFML を使用したいと考えています。cmake で 2 つのデバッグ/リリース共有ライブラリを作成します (このチュートリアルで)

パスに関する情報を一切提供せずに、テスト アプリケーションをコンパイルおよびリンクできます。だから私はすべてが標準的なパスで大丈夫だと思います

g++ -c main.cpp

g++ main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system

しかし、今アプリケーションを ./sfml-app で起動すると、

./sfml-app: 共有ライブラリの読み込み中にエラーが発生しました: libsfml-graphics.so.2: 共有オブジェクト ファイルを開けません: そのようなファイルやディレクトリはありません

これは私を混乱させます。/usr/local/lib が標準パスだと思うので、コンパイル中にこのパスを追加すると

g++ main.o -o sfml-app -L /usr/local/lib -lsfml-graphics -lsfml-window -lsfml-system

できます。ただし、 -L で情報を提供しなくても機能するはずです

では、何が問題になるのでしょうか? Ubuntuを再インストールする前にこれを作成しました。そして、私の古いシステムではうまく機能し、./ ターミナルとダブルクリックでアプリケーションを起動できます。

コンソールに追加すると

export LD_LIBRARY_PATH=$PATH:/usr/local/lib

コンソールからアプリケーションを起動できます。ただし、特定のものだけです。ダブルクリックでも(ターミナルからだけでなく)常にアプリケーションを起動したい。ライブラリを「システム全体」に追加するにはどうすればよいですか?

4

1 に答える 1

4

/usr/local/libファイルに追加してから/etc/ld.so.conf.d/呼び出しldconfigて、キャッシュを再構築する必要があります。

それを行う1つの方法:

sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/usrlocal'
sudo ldconfig

-L /usr/local/lib次に、を使用せずにコンパイルできるはずですexport LD_LIBRARY_PATH=$PATH:/usr/local/lib

于 2013-07-16T12:51:44.573 に答える