9

GNU ツールチェーンを使用する Linux では、バージョン スクリプト (gcc -Wl,--version-script=symbols.map) を使用して共有ライブラリからエクスポートされたシンボルを制御する方法を知っていますが、コマンド ラインでエクスポートされたシンボルを一覧表示したいと考えています。代わりは。IOW、私は同等のものを希望します

link /EXPORT:foo 

MS ツールチェーンから。出来ますか ?

編集:

私の質問はあまり明確ではないかもしれません: ライブラリ libfoo.so があり、ライブラリ foo1 と foo2 のみをエクスポートしたい場合、次のようにバージョン スクリプト foo.linux を作成できます。

libfoo.so
{
global:
    foo1;
    foo2;
local:
    *;
}

そして、やります

gcc -shared foo.c -Wl,--version-script=foo.linux -o libfoo.so -soname libfoo.so

代わりに、次のようなことができるようにしたいと思います。

gcc -shared foo.c -Wl,--export-symbol=foo1 -Wl,--export-symbol=foo2 -o libfoo.so -soname libfoo.so
4

3 に答える 3

3

あなたが望むようにこれを行うことができるかどうかはわかりません。1 つの方法は、あなたが言及したリンカー バージョン スクリプトを使用することです。__attribute__ ((visibility("default")))別の方法は、エクスポートしたいもののソースコードを追加し、すべてをコンパイルすることです-fvisibility=hidden

于 2010-05-12T10:50:52.783 に答える
-2

readelfとobjdumpには多くのオプションがあります。どうですか:

readelf --symbols --use-dynamic $yourlib.so
于 2009-04-27T15:55:29.787 に答える