我们的程序也没有使用到动态库,动态库的支持相对于静态库,要复杂许多,

动态库与静态库在一些变量名字上有不同,比如LTLIBRARIES/

通常,我们是使用libtool来创建动态库,在automake中使用libtool创建动态库时,使用的扩展名并不是so,而是la

比如我们声明创建一个动态库:

     lib_LTLIBRARIES =libgettext.la
libgettext_la_SOURCES
= gettext.c gettext.h ...

automake预定义了pkglibdir变量,因此可以使用pkglib_LTLIBRARIES将之安装在$(libdir)/@PACKAGE@/目录下

使用动态库时,应如下使用

     bin_PROGRAMS =hello
hello_SOURCES
=hello.c ...
hello_LDADD
= libgettext.la

这么写因为根据configure的选项,是可以禁止生成动态库的,那这时候,我们链接到的将会是libtool生成的静态库

无论静态库还是动态库,在使用libtool时,调用automake之前必须调用libtoolize以建一些automake必备的文件

标签: none

添加新评论