2015-06-22 65 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元數據文件。

相關問題