まず最初に、過去数日間に投稿された私の質問に従わなかった皆さんに謝罪します。-ffunction-sectionsと-fdata-sectionsに関連する質問をしていたので、これは少し繰り返しに聞こえるかもしれませんが、これは同じ行にあります。それらの質問とその回答は私の問題を解決しなかったので、ここで完全な問題を述べ、SOの専門家にそれについて熟考させることが最善であることに気づきました。以前にそうしなかったことをお詫びします。
だから、ここに私の問題があります:
私は多くの機能を提供する静的ライブラリのセットを構築します。これらの静的ライブラリは、多くの製品に提供されます。すべての製品が私のライブラリによって提供されるすべての機能を使用するわけではありません。問題は、ライブラリのサイズが非常に大きく、製品がそれを縮小することを望んでいることです。主な目標は、ライブラリ自体のサイズではなく、最終的な実行可能ファイルのサイズを減らすことです。
さて、調査を行ったところ、ソースファイルに4つの関数があり、そのうちの1つの関数だけがアプリケーションで使用されている場合、リンカーは残りの3つの関数をすべて最終実行可能ファイルに含めることがわかりました。同じオブジェクトファイルに属します。さらに分析したところ、-ffunction-sections、-fdata-sections、および-gc-sections(これはリンカーオプションです)によって、1つの関数のみがリンクされることが保証されることがわかりました。
しかし、私の制御が及ばないいくつかの理由でこれらのオプションは現在使用できません。
リンカが厳密に必要な関数のみをリンクし、同じオブジェクトファイル内にある場合でも他のすべての関数を除外することを保証できる他の方法はありますか?
問題に対処する他の方法はありますか?
注:コードはレガシーコードであり、大きなものであるため、コードの再編成はほとんど除外されています。
ここでは主にVxWorksとGCCを扱っています。
助けてくれてありがとう!