1. ホーム
  2. c++

[解決済み] 静的ライブラリと他の静的ライブラリとのリンク

2022-04-26 06:22:55

質問

私は多くの静的ライブラリ(a_1-a_n)に依存する小さなコードの断片を持っています。そのコードを静的ライブラリにパッケージングして、他の人が利用できるようにしたいと思います。

私の静的ライブラリ(Xと呼ぶことにしましょう)は、うまくコンパイルできます。

Xの関数を使う簡単なサンプルプログラムを作りましたが、Xにリンクしようとすると、ライブラリa_1〜a_nのシンボルが見つからないというエラーがたくさん出ます。

X と X が必要とするすべての機能 (a_1 - a_n から選択したビット) を含む新しい静的ライブラリ Y を作成して、人々がプログラムをリンクできるように Y だけを配布できる方法はありますか?


UPDATEです。

で全部捨ててしまうことを検討しました。 アー を作成し、1つのmega-libを作成しますが、それは結局必要のない多くのシンボルを含んでしまいます(すべての.oファイルは約700MBですが、静的にリンクされた実行形式は7MBです)。実際に必要なものだけを含めるいい方法はないでしょうか?


と密接な関係があるように見えます。 複数のC/C++ライブラリを1つにまとめるには? .

どのように解決するのですか?

静的ライブラリは、他の静的ライブラリとリンクしません。これを行う唯一の方法は、ライブラリアン/アーカイバツール(例えば アー Linuxの場合)、複数のライブラリを連結して1つの新しい静的ライブラリを作成します。

編集してください。 あなたの更新に応じて、必要なシンボルだけを選択するために私が知っている唯一の方法は、それらを含む.oファイルのサブセットから手作業でライブラリを作成することです。これは難しく、時間がかかり、エラーが発生しやすいものです。私はこれを行うためのツールを知りません(存在しないとは言いませんが)が、これを作成するのは非常に興味深いプロジェクトになるでしょう。