我有一个动态库/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位平台开始的多个场景中失败,因此我会考虑这种过度适应)