0

バイナリではなくライブラリを構築するために、 dropbear ssh C コードを取得しようとしています。Dropbear は、configureconfigure.ac使用して を生成することで構築されautoconfます。次に、 を使用して、実行可能ファイルをビルドconfigureする を生成します。私のアプリケーションがそれをリンクしてdropbear機能にアクセスできるように、静的にリンクされたライブラリを作成するMakefile生成されたのターゲットを作成したいと思います。Makefile

configure.acこの目標を達成するために を変更する簡単な方法はありますか?

4

1 に答える 1

1

いいえ。ただし、このために を変更する簡単な方法がありMakefile.inます。Makefile.inのテンプレートですMakefile。スクリプトは、実行中に推定された値で囲まれた式を置き換えるだけなので、通常の Makefile に行うのとほぼ同じ方法でルールを追加できconfigureます。@Makefile.inMakefile.in

この特定のケースでは、次を追加できます。

dropbearlibobjs = $(filter-out svr-main.o,$(dropbearobjs))

libdropbear.a: $(dropbearlibobjs) $(HEADERS) $(LIBTOM_DEPS) Makefile
        ar rcs $@ $(dropbearlibobjs)

dropbear:レシピが静的ライブラリを構築し、関数を含む翻訳単位mainが除外されることを除いて、これのほとんどはターゲットから取得されます。その後、使用できます

./configure
make libdropbear.a

ライブラリを構築します。

ただし、このライブラリを新しいプログラムに簡単に統合できるかどうかはわかりません。dropbear の作成者は、ほぼ確実にこのユース ケースを作成時に考慮していませんでした。そのため、コードの一部は、アプリケーションが提供できないグローバルな状態 (シグナル ハンドラーなど) に依存している可能性があり、一般に、依存できる文書化された API はありません。 . あなたが何をしようとしているのか正確にはわかりませんが、この道のりは簡単ではありません。

おそらく、libsshまたはlibssh2を見てみたいと思いませんか? (興味深いことに、前者は後者よりも最近のようです)

于 2015-02-07T00:50:59.317 に答える