如何強制automake創建標準共享庫而不是libtoolized?通常情況下,我會創建abc.so
,它以全路徑引用並加載到主程序中。有沒有辦法迫使AM做同樣的事情?如果我列出它爲_LIBRARY,automake抱怨:'abc.so' is not a standard library name; did you mean 'libabc.a'
Automake和標準共享庫
只是爲了澄清:是的,我只需要.so
支持 - 無靜態。是的,我想要一個自定義文件名。
如何強制automake創建標準共享庫而不是libtoolized?通常情況下,我會創建abc.so
,它以全路徑引用並加載到主程序中。有沒有辦法迫使AM做同樣的事情?如果我列出它爲_LIBRARY,automake抱怨:'abc.so' is not a standard library name; did you mean 'libabc.a'
Automake和標準共享庫
只是爲了澄清:是的,我只需要.so
支持 - 無靜態。是的,我想要一個自定義文件名。
Automake不知道如何構建共享庫,因爲沒有可移植的方式。如果你想要一個帶有Automake的共享庫,你必須使用Automake + Libtool。請注意,默認情況下,您可以輕鬆配置libtool不建立任何靜態庫(在configure.ac
中使用LT_INIT([disable-static])
)。
IIRC,在libtool的幫助下創建的庫沒有什麼特別之處,除非您鏈接到libltdl。如果你不想使用libtool,你有權選擇並不太在意可移植性,那麼你可以自由地使用沒有libtool的automake。我會建議使用libtool的強大功能。
其實我甚至不知道_LIBRARY是什麼,在the manual/Linking section沒有找到它。
libtoolized庫是圍繞一個或多個標準庫的包裝。 運行「make」後可以在「.libs」中找到這些庫,或者在運行「make install」後在「$ prefix/lib」中找到這些庫。
在Linux機器上,最終應該找到一個名爲「libabc.so」的文件。
libtool是要走的路。如果你想自定義名稱,-module
選項添加到_LDFLAGS,例如:
plugindir= /some/where
plugin_LTLIBRARIES= abc.la
abc_la_LDFLAGS= -module
大聲笑...這是由工程師在工程的經典標誌。它發生在工程師被允許推動需求時。他們採取了一些簡單的措施,使其變得非常複雜,幾乎不可用(如果可以使用的話)。 – jww 2017-11-02 15:33:37