我正在尝试设置一个混合使用 libtool 库和可执行文件的 automake 项目,并且我很难理解 automake 文档,尤其是。 as 涉及告诉编译器进行链接。
那么有人可以解释一下之间的区别吗LDADD
and LIBADD
?
像:
- 什么时候使用其中一种而不是另一种,
- 哪一个需要
-lname_of_library
样式值与直接文件名,
ETC。
每当我尝试阅读相关文档时,它似乎都假设我知道我不知道的事情。
Use the LIBADD https://www.gnu.org/software/automake/manual/html_node/Program-and-Library-Variables.html#index-maude_005fLIBADD-1主要用于图书馆,以及LDADD https://www.gnu.org/software/automake/manual/html_node/Program-and-Library-Variables.html#index-maude_005fLDADD-1对于可执行文件。如果您正在构建 libtool 库libfoo.la
,这依赖于另一个库libbar.la
,你会使用:
libfoo_la_LIBADD = libbar.la
如果您有其他非 libtool 库,您还可以添加它们-L
and -l
选项:
libfoo_la_LIBADD = libbar.la -L/opt/local/lib -lpng
通常,您将使用配置脚本来查找这些额外的库,并使用AC_SUBST
通过它们:
libfoo_la_LIBADD = libbar.la $(EXTRA_FOO_LIBS)
对于程序,只需使用LDADD
:
myprog_LDADD = libfoo.la # links libfoo, libbar, and libpng to myprog.
有时界限有点模糊。$(EXTRA_FOO_LIBS)
可以添加到myprog_LDADD
。将依赖项添加到 libtool (.la
)库,并使用libtool
执行所有特定于平台的链接器魔法通常是最好的方法。它将所有链接器元数据保存在一处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)