簡體   English   中英

如何適應co​​nfigure.ac在最終的Makefile中添加庫目標?

[英]How to adapt configure.ac to add a library target in final Makefile?

我正在嘗試使用dropbear ssh C代碼來構建庫而不是二進制庫。 Dropbear是通過使用autoconfconfigure.ac生成一個configure來構建的。 然后使用configure生成一個生成可執行文件的Makefile 我想為生成的Makefile創建一個目標,該目標創建一個靜態鏈接的庫,以便我的應用程序可以將其鏈接並可以訪問dropbear功能。

是否有直接方法可以修改configure.ac以實現此目標?

否。但是,有一種直接的方法可以為此修改Makefile.in Makefile.in對於模板Makefile ; configure腳本只不過用在運行期間推斷出的值替換Makefile.in中用@ Makefile.in起來的表達式,因此您可以將規則添加到Makefile.in幾乎就像普通的Makefile一樣。

在這種情況下,您可以添加以下內容:

dropbearlibobjs = $(filter-out svr-main.o,$(dropbearobjs))

libdropbear.a: $(dropbearlibobjs) $(HEADERS) $(LIBTOM_DEPS) Makefile
        ar rcs $@ $(dropbearlibobjs)

大部分內容都來自dropbear:目標,除了配方會建立一個靜態庫,並且過濾掉包含main功能的翻譯單元。 然后,您可以使用

./configure
make libdropbear.a

建立圖書館。

不過,我不確定該庫與新程序的集成有多么容易。 dropbear的作者在編寫該用例時幾乎肯定不會考慮該用例,因此部分代碼可能取決於應用程序無法提供的全局狀態(例如信號處理程序),並且通常沒有可依賴的文檔化API。 。 我不知道您打算做什么,但是這條路不太容易。

也許您寧願看看libssh還是libssh2 (有趣的是,前者似乎比后者更新)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM