0

共有ライブラリのテスト プログラムをビルドするために使用しようとしている Autogen Makefile.am があります。テスト バイナリをビルドするために、引き続き共有ライブラリをターゲットとしてビルドしたいのですが、テスト プログラムを静的にリンクしたいと考えています。これを行うために Makefile.am を作成するために、ここ数時間費やしました。

  • ライブラリの .a バージョンを使用するように LDADD 行を明示的に変更しようとしましたが、このライブラリがビルドされていることがわかりますが、ファイルが見つかりませんというエラーが発生します。

  • LDFLAGS を介して .libs ディレクトリをリンク パスに追加しようとしましたが、まだ見つかりません。

  • ライブラリ ソースをテスト SOURCES リストに移動しようとしましたが、実行可能オブジェクト ファイルが静的ライブラリのものとは異なる方法で構築されているため、これは機能しません。

  • .a バージョンの lib_LIBRARIES エントリを複製して (lib_LTLIBRARIES と lib_LIBRARIES の両方がある)、共有バージョンのすべての LDFLAGS、SOURCES、dir、および HEADERS を静的バージョンの一部として複製しようとしました ( laaに置き換えます)。 form _a_SOURCES = _la_SOURCES. それでも、何をビルドするかを判断できないため、これは機能しません。

  • 私のconfigure.acファイルは、静的ライブラリと動的ライブラリの両方を提供するデフォルトのLT_INITを使用しています.libtoolが.aファイルを認識できない場合でも、両方を構築しているようです。

お願いします、誰かこれを行う方法を知っていますか?

4

1 に答える 1

0

@Brett Hale がコメントで言及しているMakefile.amように、プログラムを静的にリンクするように指示する必要があります。

これを実現するには、に追加-staticする必要がありますLDFLAGS。特定のバイナリの を
変更するには、変更します (バイナリはビルドするバイナリの名前です)。LDFLAGSbinary_LDFLAGS

したがって、次のようなものがうまくいくはずです:

binary_LDFLAGS = $(AM_LDFLAGS) -static
于 2012-10-26T08:48:26.853 に答える