我有一個Autogen Makefile.am,我試圖用它來構建一個共享庫的測試程序。爲了構建我的測試二進制文件,我想繼續構建共享庫作爲目標,但我希望靜態鏈接測試程序。我花了最近幾個小時試圖製作我的Makefile.am來完成它。建立一個共享庫,但鏈接到一個靜態的
我試着明確改變LDADD線使用的庫。一個版本,並得到沒有發現錯誤,即使我可以看到這個庫得到建立了一個文件。
我嘗試通過LDFLAGS將.libs目錄添加到我的鏈接路徑,但仍無法找到它。
我試着將我的庫源移動到我的測試源列表中,這不起作用,因爲可執行目標文件的構建方式與靜態庫的不同。
我甚至嘗試複製.a版本的lib_LIBRARIES條目(因此同時包含lib_LTLIBRARIES和lib_LIBRARIES)並複製共享版本的所有LDFLAGS,SOURCES,dir和HEADERS作爲靜態版本的一部分(替換拉與形式_a_SOURCES = _la_SOURCES。不過這並不因爲工作的現在想不通建設什麼樣的。
我configure.ac文件是使用默認LT_INIT應該給我都是靜態庫和動態庫,正如我所說的那樣,即使libtool無法看到.a文件,它也正在建立。
請問,任何人都知道如何做到這一點?
'prog_LDFLAGS = -static' –
謝謝!這工作!將LDADD保存爲.la格式的庫(共享),但是在LDFLAGS上強制靜態確實會強制與我的庫進行靜態鏈接!謝謝你,謝謝你,謝謝你! – TimeHorse
.la不一定是共享庫。它實際上是一個文本文件,它包含庫的靜態_and_共享版本的位置以及一些其他信息。 – ptomato