2010-01-13 74 views
13

我是一個自動工具newb 我難以弄清楚如何容易地將一個特定的庫鏈接到一個配置的目標。如何在autoconf中添加一個鏈接到一個庫在配置腳本/生成文件

我有我想建立通常的方式源碼包: 的./configure & &使& &使安裝

的CPPS不幸的是一個有丟失引用到另一個庫。 手工編譯(調整命令行)工作。但我寧願 「修補」編譯腳本。 哪裏是編輯鏈接引用的標準位置?

undefined reference to `boost::system::get_system_category() 

這是我的錯誤信息btw。

回答

16

您需要將相關的-l標誌添加到AM_LDFLAGSMakefile.am;例如爲:

AM_LDFLAGS = -lboost_system-mt 

注意,Boost庫通常在後綴—字母序列指示所述構建配置結束。在上面的例子中,後綴是-mt。這可能在您的安裝中有所不同(儘管-mt變體通常在POSIXy系統,IME上可用)。

我做這樣的事情:

AM_LDFLAGS = -lboost_system$(BOOST_LIB_SUFFIX) 

BOOST_LIB_SUFFIX是一種珍貴的變量(見AC_ARG_VAR)默認爲-mt

+0

簡潔和非常有益的。謝謝。 – AndreasT 2010-01-26 07:12:47

1

使用ax_cxx_check_lib.m4因爲boost_system不具有可與AC_CHECK_LIB檢查任何的extern「C」標誌(未重整名稱):

http://ac-archive.sourceforge.net/guidod/ax_cxx_check_lib.m4

下載上面的文件,並將其命名爲acinclude.m4,並把它放在項目根目錄中的m4文件夾。

configure.ac

AC_LANG_PUSH([C++]) 

AX_CXX_CHECK_LIB([boost_system-mt],[boost::system::generic_category()],[BOOST_LIB_SUFFIX="-mt"],[BOOST_LIB_SUFFIX=""]) 

AC_LANG_POP([C++]) 

AC_SUBST(BOOST_LIB_SUFFIX) 

Makefile.am

[artifact_name]_LDFLAGS = [email protected][email protected] 
相關問題