Makefile.am:如何链接一个动态库,仅当库存在/安装在系统上



我有一个动态库/usr/lib64/lib - 3.2.2 .so.1。而且,我正试图改变Makefile。如果文件存在,myprog_LDADD可以链接到这个库。有什么办法吗?

我试过了:

if [ -f /usr/lib64/liba-3.2.so.1 ]; then myprog_LDADD += /usr/lib64/liba-3.2.so.1 ; fi;

但这不起作用。关于如何制作Makefile有什么建议吗?如果库存在,对库的链接?谢谢!

通常的方法当然是使用您的configure(.ac)(autotools)检查库的存在,然后使用结果告诉您的Makefile(.am)链接到库。

configure.ac片段:

AC_CHECK_LIB([a-3.2], [a_fun], [A_LIBS="-la-3.2"])
AC_SUBST([A_LIBS])

Makefile.am中相应的代码片段:

myprog_LDADD += @A_LIBS@

请注意,这将在链接器的所有(默认)搜索路径中查找liba-3.2.so,而没有.1后缀,但我认为这是正确的行为,无论如何(并且您对/usr/lib64/liba-3.2.so.1的显式链接必然会在从非64位平台开始的多个场景中失败,因此我会考虑这种过度适应)

相关内容

最新更新