3

機能を公開せずにコードを外部開発者に配布できるように、シンボルを削除しようとしています。nmコマンドを発行したときにシンボルが表示されないように、シンボルを非表示にしています。アイデアは、ごく一部のシンボルを除いてすべてのシンボルが隠されている静的ライブラリを提供することです。すべてのシンボルが削除された共有ライブラリを作成できます。しかし、静的ライブラリでは取得できません。以下のリンクをたどってみましたが、うまくいきませんでした。

Xcode/gcc で構築された静的ライブラリでのシンボルの隠蔽

file1.c と file2.c の 2 つのファイルがあり、file1.c は file2.c への関数呼び出しを行います。file2.c のいくつかのシンボルを非表示にしたい。ld -r オプションを使用すると、nm コマンドを使用してもシンボルを表示できます。非表示にしたい関数の前に属性((visibility("hidden")))を使用してみました。シンボルが削除されているが内部的にリンクされている .o ファイルを取得するための正確な手順を教えてください。

4

1 に答える 1

3

「nm」コマンドでシンボルが表示されます。strip コマンドを使用してシンボルを削除できます。strip コマンドのマニュアル ページを参照してください。

于 2013-06-07T08:40:24.543 に答える