2016-08-24 21 views
2

これは冗長であることをお詫びしますが、利用可能な回答のいずれも私の問題を解決できないようです。共有オブジェクトライブラリを使用して実行可能ファイルをコンパイルしようとしています。共有オブジェクトライブラリはlibsession.soと呼ばれ、実行可能ファイルをコンパイルするのと同じディレクトリにあります。コンパイルとリンクするために、私は、次のコマンドg ++は共有ライブラリを見つけることができません

g++ test_main.cpp -o program -std=c++11 -I ../src/base -L. -lsession

Unforutanelyを使用し、私はリンク時にが-lsessionエラーを見つけることができません取得します。

g++ test_main.cpp -o program -std=c++11 -I ../src/base libsession.so

を次のように私は直接、共有ライブラリを参照するようにコマンドを変更する場合は、実行可能ファイルは、/リンクコンパイルし、すべてが順調です。誰かが私が間違っているかもしれないことについての考えを持っていますか?

答えて

1

「-l」オプションを使用して、ファイル 名を指定しての唯一の違いは、「-l」が「libに」と `.A」でライブラリを囲み、 複数のディレクトリを検索することです。

https://gcc.gnu.org/onlinedocs/gcc-3.0/gcc_3.html#SEC16

+2

また、このような状況では良い練習が検索パスは、(他の有用な情報amogst)されているかを確認するために、 '-V'フラグ(冗長)を使用することです。 –

+0

恐ろしい!だから、これは、動的にリンクされたライブラリ(共有オブジェクト)ではうまくいきません。それが問題でした。ありがとう。 – cirrusio

関連する問題