2

私は、多数のファイルで構成され、APR(http://apr.apache.org)を使用するCプログラムを作成しました。これにはヘッダーが含まれており、ライブラリの動的リンクを希望します。

私の問題は、現在、開発サイトで設定されているAPRヘッダーへのパスと、見つけた静的APRライブラリのパスの両方をハードコーディングしていることです。

これは私のMakefileがどのように見えるかです(私はいくつかのビットの名前を変更しました):

my_program: file1.c file2.c file3.c file4.c file5.c file6.c file7.c
    @rm -f $@
    $(CC) -std=c99 -pedantic -D_POSIX_C_SOURCE -I/usr/local/include/apache -L/usr/local/lib -lapr-1 $(CFLAGS) $^ -o $@

明らかに、APR静的ライブラリファイルの名前はですがlibapr-1.a、私も持ってlibapr-1.soおりlibapr-1.so.0、それlibapr-1.laが何であるかさえわかりません。したがって、事実上、私は現在APRに静的にリンクしているのではないかと思います。立派なビルドシステムという私の目標とは別に、APRに動的にリンクしたいと思います。

現在私だけでなく、他の人が私のプログラムをビルドするのに十分な柔軟性を備えた自動ビルドをセットアップするための一般的な方法はありますか?の近くの匂いがしますautotoolsが、私は彼らとの経験がまったくないので、今のところ次善の策に落ち着きたいです。どのようなオプションがありますか?

4

1 に答える 1

1

デフォルトでは、リンカーは共有ライブラリ(.so)を取得し、静的ライブラリ(.a)が見つからない場合は取得します。したがって、リンカー-lapr-1に渡すと、必要なものが正確に表示されます。

バイナリが実際に共有ライブラリを使用することを確認するには、次のコマンドを実行します。

ldd your_binary

出力リストにaprライブラリが表示されます。

于 2011-01-21T20:30:43.260 に答える