2015-06-22 62 views
2

让我明确我的意思是滚动安装。可以将autotools配置为执行滚动安装/卸载吗?

让我们假设我正在开发一个将lib libmylib.so安装到/ usr/lib中的项目。

我用来做这个的过程只需键入“make install”。

现在让我们假设/ usr/lib已经包含/usr/lib/libmylib.so 和/usr/lib/libmylib.so.1。

我想自动工具生成一个makefile,做了

mv /usr/lib/libmylib.so.1 /usr/lib/libmylib.so.2 
mv /usr/lib/libmylib.so /usr/lib/libmylib.so.1 
install libmylib.so into /usr/lib 

我也想,对于一些固定数目N直接删除/usr/lib/libmylib.so.N而不是移动。

我还想要一个make目标卸载,以便当我“使unstall”。系统被恢复以及它可以befoire我安装它。

+1

你知道共享库上的数字对你的系统有意义吗?你不能仅仅依靠随机数字来.so文件,并期望事情继续工作。 –

回答

0

可以在Makefile.am限定install-exec-localinstall-data-local规则,对于(例如)分别libmylib.somylib.h

automake支持uninstall-local规则。另一个前缀是-hook,它在之后运行的对应规则。

显然,您的方案不应该用于任何发布的软件。它打破了autotools软件包的预期行为,尤其是在前缀编码为/usr的情况下。您可以使用'正确'libtool versioning,它通常还会安装libmylib.la元数据文件。

相关问题