1

我是 autotools 的新手,我一直在寻找如何使用 autotools 打包库和可执行文件的示例。可执行文件取决于库,因此必须首先构建库。

到目前为止,我已经将库自己打包,然后我已经能够编译可执行文件并在安装后链接到库。这是我的 Makefile.am 用于该过程:

lib_LTLIBRARIES = libfoo.1.0.0.la
libfoo_1_0_0_la_SOURCES = libfoo.c
library_includedir=$(includedir)
library_include_HEADERS = libfoo.h

然后在 configure.ac 文件中,我LT_INIT在适当的位置添加了该行。一切都构建得很好并且工作正常。我有一个文件 foo.c 使用我可以编译的库gcc foo.c -o foo -lfoo,但是我想扩展 autotools 包以包含 foo 可执行文件,我不知道如何做到这一点。我已将 Makefile.am 修改为如下所示:

bin_PROGRAMS=foo
foo_SOURCES=foo.c
foo_DEPENDENCIES=libfoo.1.0.0.la
lib_LTLIBRARIES = libfoo.1.0.0.la
libfoo_1_0_0_la_SOURCES = libfoo.c
library_includedir=$(includedir)
library_include_HEADERS = libfoo.h

我的configure.ac文件没有改变。在我开始之前,一切都运行良好,此时似乎 foo.c 是首先编译的,并且由于 libfoo 中的函数不可用,显然会引发很多错误。我已经搜索过这样的例子,但到目前为止还没有任何运气。任何帮助,将不胜感激。

4

2 回答 2

3

这是正确的方法。

lib_LTLIBRARIES = libmoovcaps.la
libmovcaps_la_SOURCES = libmoovcaps.c
include_HEADERS = libmoovcaps.h
bin_PROGRAMS = moovcaps
moovcaps_SOURCES = moovcaps.c
moovcaps_LDADD = libmoovcaps.la

PS:为什么你的 libmoovcaps.la 中有数字?您可以-version-info通过libmoovcaps_LDFLAGS.

于 2013-01-08T00:12:49.300 回答
0

我想通了,我把它放在我的Makefile.am

lib_LTLIBRARIES = libfoo.1.0.0.la
libfoo_la_SOURCES = libfoo.c
library_includedir=$(includedir)
library_include_HEADERS = libfoo.h
bin_PROGRAMS=foo
foo_SOURCES=foo.c
foo_DEPENDENCIES=libfoo.1.0.0.la
foo_LDADD= libfoo.o

这似乎现在有效:)

于 2013-01-03T16:26:56.807 回答