2011-10-18 107 views
6

我一直在Google上搜索並安裝了一段時間,但我無法用autoconf來處理這個問題。ubuntu上的autoconf錯誤11.04

我已經下載了一個程序,我想編譯,做了一些更改,並且需要分別運行autogen.sh和./configure並進行安裝。

但是,當我嘗試運行autogen.sh時,出現以下錯誤;

configure.ac:225: error: possibly undefined macro: AM_PATH_GTK_2_0 
If this token and others are legitimate, please use m4_pattern_allow. 
See the Autoconf documentation. 

所以我去上下載的autoconf-2.68,automake的1.11,m4-1.4.16,並試圖命令和apt-get安裝libgtk2.0-dev的,其中沒有改變的結果。當我嘗試aclocal,我再次得到錯誤

configure.ac:225: warning: macro `AM_PATH_GTK_2_0' not found in library 

我目前卡住了,無處可去。所以我會很高興的任何建議。

回答

5

給出名稱AM_PATH_GTK_2_0,可以得到以下觀察序列: 1)「AM_」位於automake的命名空間中,因此m4宏必須來自automake。 2)嗯,它不在automake中。 3)它可能來自gtk,所以gtk開發者在命名 他們的m4宏與automake衝突時發生錯誤。這是GTK中的一個錯誤,但我可能需要 下載最新版本的gtk來獲取宏。

問題是你沒有gtk期望你擁有的m4宏。你可能需要安裝libgtk-devel(或類似的東西)。如果我是正確的,並且libgtk確實正在安裝名爲AM _...的m4宏,請將它作爲開發人員的錯誤報告。他們跺腳automakes的名稱空間(這是不幸的,這是一個非常常見的錯誤)。

既然你提到要下載automake,我認爲問題在於你運行的aclocal不在/ usr/share/aclocal ,但在不同的位置(即,您在/ usr/local中安裝了automake)安裝libgtk-dev時,它可能會在/ usr/share/aclocal中安裝* .m4文件,但是您需要/ usr/local/share/aclocal(或$ prefix/share/aclocal,其中前綴是您用來安裝automake的地方)。最簡單的解決方案是將該文件複製到$(aclocal --print)即運行「aclocal --print 「查看aclocal在哪裏查找m4文件,然後找到libgtk-dev安裝的文件,該文件定義了不正確命名的m4宏,並將該文件複製到適當的位置。或者(也可能是一個更好的解決方案),你可以在$(aclocal --print)中放入一個名爲dirlist的文件,它包含單行「/ usr/share/aclocal」,這樣你手上安裝的aclocal將一直尋找m4文件安裝在/ usr/share中。

+0

但我確實安裝了libgtk2.0-dev。所以你確實相信這個錯誤來自我正在編譯的程序的開發者? – fizboz

+0

那完全是它! 'sudo cp /usr/share/aclocal/*.m4 /usr/local/share/aclocal-1.11/'解決了這個問題。謝謝你的幫助:) – fizboz

+1

@fizboz:使用'sudo cp /usr/share/aclocal/*.m4/usr/local/share/aclocal-1.11 /'你將安裝置於危險之中。下一次你升級任何在'/ usr/share/aclocal /'中放入一些宏的軟件包時,你仍然會使用放入其他目錄的這個宏的過時版本。另外目錄'/ usr/local/share/aclocal-1.11 /'應該只包含Automake宏。正如William所建議的那樣,更好的解決方法是'echo/usr/share/aclocal>/usr/local/share/aclocal/dirlist'。 – adl

9

我知道這是一個有點晚了,但你只需要安裝庫libgtk2.0-dev:如果您收到有關涉及到GLIB的東西錯誤

sudo apt-get install libgtk2.0-dev 

,然後安裝libglib2.0-dev還有:

sudo apt-get install libglib2.0-dev 
+1

謝謝!非常快速簡單的解決方案。 –