本文是記錄在mac的gentoo-prefix上安裝git svn的問題總結,感興趣的朋友可以參考一下,或許你也會遇到這些小問題折騰,之前在mac上安裝了gentoo-prefix,但是在emerge git的時候,會發現如果增加了subversion這個USE,就會編譯失敗.
從編譯失敗的錯誤上,可以看出,編譯失敗的來源是svn相關的代碼,然后錯誤是鏈接的時候提示一些符號找不到,代碼如下:
- Undefined symbols for architecture x86_64:
- "_libintl_ngettext", referenced from:
- _show_date_relative in libgit.a(date.o)
- "_libintl_gettext", referenced from:
- _show_date_relative in libgit.a(date.o)
- _warn_on_inaccessible in libgit.a(wrapper.o)
- _xgetpwuid_self in libgit.a(wrapper.o)
- ld: symbol(s) not found for architecture x86_64
- --Vevb.com
大致可以看出,是intl相關的庫沒有鏈接,在gentoo的bugzilla上也查到了類似的bug,按照附件提供的補丁,需要判斷當前系統為mac的時候,增加-lintl,以鏈接intl這個庫.
除了這個庫之外,還有一個iconv相關的符號找不到,bug里面沒有描述,在另一臺gentoo的機器上用e-file查詢了之后,發現原生linux的iconv是由glibc提供的,但是prefix是不能自由安裝glibc的庫的,但是系統里面已經安裝了dev-libs/libiconv這個包,提供了iconv相關的庫,因此和前面一樣,需要手工在鏈接的時候增加-liconv.
最后修改完的ebuild文件大致為,代碼如下:
- --- git-1.9.2.ebuild.old 2014-04-20 15:10:34.000000000 +0800
- +++ git-1.9.2.ebuild 2014-04-20 15:09:54.000000000 +0800
- @@ -324,6 +324,7 @@
- if use subversion ; then
- cd "${S}"/contrib/svn-fe
- + [[ ${CHOST} = *-darwin* ]] && EXTLIBS="${EXTLIBS} -lintl -liconv"
- git_emake EXTLIBS="${EXTLIBS}" || die "emake svn-fe failed"
- if use doc ; then
- git_emake svn-fe.{1,html} || die "emake svn-fe.1 svn-fe.html failed"
- No Comments
新聞熱點
疑難解答