2012-05-18 89 views
0

我試圖用automake和autotools來捆綁一個小型的C++程序。在我當前的設置中,所需的庫安裝在configure腳本能夠找到的位置,但在從make調用g++時找不到。在配置過程中發現庫,但沒有發現

我可以通過傳遞相關-I選項調用configure(使得正確的include路徑沿着傳遞到編譯器)時解決這個問題,但我更喜歡的是configure腳本未能找到庫每當make無法找到它。

或者,我希望配置腳本生成必要的-I命令,以便編譯器找到它需要的所有東西。

有沒有一些標準的方法來做到這一點?

+1

你能給這兩個配置的輸出的相關部分,並命令之前(離開了「$」)? – Samveen

+0

是的,configure.log中的相關輸出爲''gcc -o conftest -I/usr/local/include -I/sw/include -L/usr/local /lib -L ​​/ sw/lib conftest.c - lCCfits>&5''成功。從make的相關行是''g ++ [...無關標誌...] -MMD -g -O2 -MT DendroFits.o -MD -MP -MF .deps/DendroFits.Tpo -c -o DendroFits.o DendroFits.cpp'' which 「DendroFits.h:14:18:warning:CCfits:No such file or directory'' – ChrisB

+0

請添加更多細節並將其添加到問題本身中。另外,從輸出中看來,頭文件「DentroFits.h」無法找到「CCFits」的定義。請檢查相關標題是否已包含在此標題中。 – Samveen

回答

1

配置腳本可能會被打破,或者您配置的輸出的解釋:

如果在配置檢查你的庫檢查絕不是它是否能鏈接針對某一庫,這樣做保證你有所需的頭文件可用(或可找到)進行編譯。

因此,你應該添加檢測到您configure.ac磁帶庫和頭

AC_CHECK_LIB([foo], [foo_init]) 
AC_CHECK_HEADERS([foo.h]) 

,只認爲你可以建立如果雙方的lib &頭都存在兩種。

如果找不到標題,並且您有一個好主意,您可以添加這些路徑(在configure中)並重新運行測試。 假設你必須添加相當標準的路徑('/ usr/local/include'應該是自動搜索路徑的一部分;'/ sw/include'是fink的一部分,所以你應該確保你已經初始化你的系統通過適當的療法終端運行

$ . /sw/bin/init.sh 

試圖運行./configure