2010-05-16 131 views
0

安裝了PyGTK的依賴我試圖安裝以下依賴性在Mac OS 10.6.3的PyGTK 2.16.0(Python的GIMP工具包):錯誤,而在Mac OS 10.6.3

  • 巧舌如簧2.25。 5
  • 的gettext 0.18
  • libiconv的-1.13.1

當我嘗試安裝巧舌如簧,我得到了以下錯誤消息:

gconvert.c:55:2: error: #error GNU libiconv not in use but included iconv.h is from libiconv 

libiconv網頁討論了gettext和libiconv之間的循環依賴---構建一個,然後構建另一個,然後再構建第一個。我試圖做到這一點,儘管可能不正確。 (請問以下工作:make distclean; ./configure; make; sudo make install?)

posting的作者有同樣的問題,他通過安裝libiconv-1.13.1來解決它。

任何人都可以更詳細地解釋錯誤,以及如何糾正它?

回答

-1

在Mac上,如果您想安裝GTK +,PyGTK或某些其他程序,可以下載MacPorts

在終端輸入port search gtk來搜索與GTK +相關的程序。你將需要一個互聯網連接。

類型sudo port install gtk2安裝GTK + 2。 MacPorts將查找並安裝任何依賴項。

輸入port installed查看您使用MacPorts安裝的程序。

0

錯誤消息的原因是,如果您在OS X上針對當前(〜10.6.3)系統安裝的libiconv版本構建glib,則需要將--with-libiconv = gnu傳遞給glib configure腳本。但是,GTK-OSX構建腳本默認不會傳遞這些信息。

簡單的解決方法是下載最新libiconv的(http://www.gnu.org/software/libiconv/#downloading),並通過您的GTK的安裝位置的安裝前綴配置如:

$ cd libiconv-1.13.1/ 
$ ./configure --prefix=/Users/jamie/gtk/inst/ 
$ make && make install 

在這個版本中libiconv的,看來你不需要使用--with-libiconv = gnu來配置glib,因此您現在可以通過重新運行glib configure階段繼續進行GTK-OSX構建過程。

0

因爲我已經看到了MacPorts的包管理器是比Fink包管理器不太可靠的報道很多,我建議安裝Fink,然後簡單地做

fink list pygtk # Lists all pygtk packages 
fink install pygtk2-gtk-py27 # This one, or the one that corresponds to your (Fink) Python 

最重要的是,Fink可以讓你訪問到比MacPorts更多的軟件包。

我認爲如果您打算使用開源程序,那麼「在包管理器中投資」是必須的。

2

雖然是個老問題,還是想分享一下爲我工作的解決方案。

導航到'glib'文件夾(只是簡單的glib,主glib源文件夾的INSIDE),然後用你最喜歡的編輯器打開'gconvert.c'。

#if defined(USE_LIBICONV_GNU) && !defined (_LIBICONV_H) 
#error GNU libiconv in use but included iconv.h not from libiconv 
#endif 

#if !defined(USE_LIBICONV_GNU) && defined (_LIBICONV_H) 
#error GNU libiconv not in use but included iconv.h is from libiconv 
#endif 

替換最後3行,像這樣:

#if defined(USE_LIBICONV_GNU) && !defined (_LIBICONV_H) 
#error GNU libiconv in use but included iconv.h not from libiconv 
#endif 

#if !(defined(__APPLE__) && defined(__LP64__)) && !defined(USE_LIBICONV_GNU) && defined (_LIBICONV_H) 
#error GNU libiconv not in use but included iconv.h is from libiconv 
#endif 

來源: http://letsneverdie.net/blog/?p=75