7

実行可能ファイルを静的ライブラリ(.a)にリンクすると、静的ライブラリのシンボルが実行可能ファイルによってエクスポートされることになります。これを避けて何もエクスポートしたくない。

バージョンスクリプトを提供してみましたが、違いはないようです。私のバージョンスクリプトの内容は次のとおりです。

{
    global:
        main;
    local:
        *;
};

静的ライブラリにリンクするときに実行可能ファイルからシンボルをエクスポートしない方法はありますか?静的ライブラリ自体を再コンパイルできません。

4

2 に答える 2

10

実行可能ファイルはデフォルトではシンボルをエクスポートせず、-Wl,--export-dynamic を使用しない限りエクスポートしません。これは、メインの実行可能ファイル内のシンボルにリンクする必要があるライブラリを動的にロードする場合にのみ必要です (ライブラリに exe 内の仮想メソッドをオーバーライドするクラスが含まれている場合、これは C++ では一般的なケースです)。

おそらく、シンボルのエクスポートとデバッグ シンボルの使用を混同している可能性があります。デバッガーのためにデバッグ シンボルが生成されますが (exe を削除しない場合)、実行する必要はありません。

于 2010-03-03T22:35:33.057 に答える
3

を使用しstripますか?

$マンストリップ

于 2010-03-03T22:04:53.370 に答える