共有ライブラリmy.soの1つは、バージョンtest..2.3をライブラリtest.so.bのシンボルとして使用しています。 my.so共有ライブラリを実行可能ファイルにリンクすると、 '参照されていないシンボルシンボル@@ test_1.2.3'と表示されます。gccバージョンベースのライブラリの未参照シンボル
g++ -o myexecutable myexecutable.o -L/path-to-my.so -lmy -L/path-to-test.so -ltest
私はへのリンクリンクを変更する場合 - -
g++ -o myexecutable myexecutable.o -L/path-to-my.so -lmy /path-to-test.so/libtest.so
それが動作する、以下のようにリンク・ラインがある場合に発生します。
-L
で指定した場合、libtest.so
が選択されないのはなぜですか?完全なパスとして指定されているのはなぜですか?
最初の例で '-ltest'と' -lmy'の順序を入れ替えてみましたか? –
あなたの返事をありがとう。私は質問を投稿する前にこれを試しましたが、助けにはなりませんでした。 – Kartlee
'g ++ -o myexecutable myexecutable.o -L/path-to-my.so/libmy.so/path-to-test.so/libtest.so'のように、両方のライブラリのパスを変更しようとしましたか? –