我试图获取dropbear ssh C代码来构建库而不是二进制文件。 Dropbear是使用configure
从configure.ac
生成autoconf
而构建的。然后使用configure
生成构建可执行文件的Makefile
。我想为生成的Makefile
创建一个目标,该目标创建一个静态链接的库,以便我的应用程序可以链接它并有权访问dropbear功能。
是否有直接的方法来修改configure.ac
以实现此目标?
答案 0 :(得分:1)
没有。但是,有一种直接的方法来修改Makefile.in
。 Makefile.in
是Makefile
的模板; configure
脚本只是将@
中Makefile.in
中包含的表达式替换为在运行期间推导出的值,因此您可以将规则添加到Makefile.in
,几乎相同你想要一个简单的Makefile。
在这种特殊情况下,您可以添加以下内容:
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你可以依赖。我不知道你打算做什么,但这条道路不太容易和直截了当。