如何在configure.ac中使用Autoconf AC_SEARCH_LIBS宏,以便在庫本身依賴於其他庫時搜索靜態庫?AC_SEARCH_LIBS這個靜態庫本身有依賴關係嗎?
考慮這個例子。
我正在爲繪圖庫PLplot編寫一套高級包裝函數,並將我的目標文件放入靜態庫libpsm.a中,該庫被Automake安裝到/ usr/local/lib中。它要depdends的PLplot對象不在庫中。接下來,我有另一個程序,我打算直接使用我的庫,間接使用PLplot庫。在該程序的configure.ac中,我有這個。 sm_device
函數是我的庫中的函數。
AC_SEARCH_LIBS([sm_device],[psm],[],[
AC_MSG_ERROR([unable to find the sm_device function])
])
我遇到的問題是,這個測試失敗,因爲AC_SEARCH_LIBS
宏試圖編譯鏈接到搜索庫,libpsm.a
一個小的測試程序,並調用函數sm_device
,但將失敗,因爲該測試程序也不鏈接到它間接依賴的PLplot庫。
- 這是如何做到這給出的配置,我的圖書館是一個靜態庫,它不包括PLplot庫,並且它不使用PLplot的共享對象庫?
- 我應該切換到共享庫嗎?即,使用PLplot的共享庫,也許使我的庫共享庫?這是必要的,還是隻是推薦?
- 什麼是解決此問題的「正確」方法?
謝謝!而且,事實證明,我之前使用PKG_CHECK_MODULES獲取了PLplot庫,然後可以在$ PLPLOT_LIBS中替換第五個參數。好極了! –