.so
プラグインをロードする実行可能ファイルがあります。
-rdynamic
シンボル コールバックが発生するように、実行可能ファイルがリンクされます。
実行可能ファイルに含まれている静的ライブラリがあります。これにはBLAH_hello()
、.a
スタティック ライブラリは実行可能ファイルでは使用されません。BLAH_hello()
つまり、実行コード内にへの呼び出しはありません。
ただし、 に.so
は への呼び出しがありますBLAH_hello()
。
私dlopen()
が.so
未定義のシンボルについて不平を言うときBLAH_hello()
BLAH_hello()
のように、実行可能コードにダミーの呼び出しを含めると、BLAH_hello(NULL);
. シンボルは実行可能ファイルに含まれており、.so
ロード時にシンボルが検出されます。
をリンクすることもできると確信.so
して.a
いますが、動的にロードされた複数の が呼び出しを.so
使用するBLAH_hello
ため、実行可能ファイルに含めることは理にかなっています。ライブラリをそれぞれにリンクすると、シンボルの競合も心配です.so
。
だから私が疑問に思っているのは、実行可能ファイルで実際に使用さ.a
れていなくても、実行可能ファイルにシンボルを取得する方法ですか?