はい、できますが、最初のプロセスはmmap、メモリ マップト ファイルまたは で作成された共有領域のいずれかを介して、最初に共有メモリを作成している必要がありますshm_open。
コンパイルされたコードを共有している場合、共有ライブラリはそのために作成されました。それらに対して通常の方法でリンクすることができ、共有は自動的に行われます。またはdlopen、プラグインなどを使用して手動でロードすることもできます。
アップデート:
コードはコンパイラによって生成されているため、再配置について心配する必要があります。コンパイラは、どこでも動作するコードを生成しません。.dataセクションが特定の場所にあり、.bssセクションがゼロになっていることが期待されます。GOT を実装する必要があります。静的コンストラクターを呼び出す必要があります。
要するに、あなたが望むのはおそらくdlopen. このシステムを使用すると、ファイルのように共有ライブラリを開き、関数ポインタを名前で抽出できます。ライブラリを構成する各プログラムdlopenはコード セクションを共有するため、メモリを節約できますが、それぞれがデータ セクションの独自のコピーを持つため、互いに干渉することはありません。
ライブラリ コードをコンパイルする必要があることに注意してください。-fPICそうしないと、コードを共有できなくなります (実際、多くのアーキテクチャのリンカとダイナミック ローダーは、とにかく PIC ではないライブラリをサポートしていない可能性があります)。