現在、使用しているポータブル C ライブラリの 1 つにジレンマがあります。2 つの高レベルの lib (libA と libB など) があります。それらは非常に異なる API を提供し、ユーザー構成オプションに依存します。私はそれらを一緒にマージすることに反対です。なぜなら、後で libC、libD を libA とマージすることを意味するからです。だから私はこのきれいな分離を維持しようとしています. これは、libB ではなく libA のみが必要な場合、アプリケーション プログラマーが軽量アプリケーションを作成できることも意味します。
問題は、libB が libA のシンボルを使用することです。ただし、公開したくないlibAの低レベルAPIを使用しています。コードの重複を回避しながら、この低レベル API の公開を防ぐ方法はありますか?
UNIX ではコンパイル中にgcc 可視性フラグを使用し、Windows では同等のフラグを使用しています。したがって、明らかにシンボルが表示されます。
$ nm -D bin/libA.so
[...]
00000000000045e6 T low_level_func1
00000000000043d8 T low_level_func2
静的low-level
ライブラリを作成することはできますか? ビルド中に libA と libB をリンクし、このlow-level
ライブラリをインストールまたは配布しないでください。これはポータブルですか?移植可能なソリューション (Linux、Windows、FreeBSD、MacOSX...) を見つける必要があります。
ありがとう