0

我正在尝试获取dropbear ssh C 代码来构建库而不是二进制文件。Dropbear 是configure通过configure.ac使用autoconf. 然后configure用于生成Makefile构建可执行文件的 。我想为生成Makefile的创建一个静态链接库的目标,以便我的应用程序可以链接它并可以访问 dropbear 功能。

是否有直接的方法来修改configure.ac以实现这一目标?

4

1 回答 1

1

没有。但是,有一种直接的方法可以为此修改Makefile.inMakefile.inMakefile;的模板 该脚本只是用它在运行期间推导出的值替换包含在 中的configure表达式,因此您可以将规则添加到与普通 Makefile 几乎相同的方式。@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 可供您依赖. 我不知道你到底打算做什么,但这条路不太可能简单明了。

也许您更愿意看一下libsshlibssh2?(有趣的是,前者似乎比后者更近)

于 2015-02-07T00:50:59.317 回答