之前參照yegal的文章在mac上安裝了gentoo-prefix。但是在emerge git的時候,會發現如果增加了subversion這個use,就會編譯失敗。
從編譯失敗的錯誤上,可以看出,編譯失敗的來源是svn相關的代碼,然後錯誤是連結的時候提示一些符号找不到:
[cce]
undefined symbols for architecture x86_64:
“_libintl_ngettext”, referenced from:
_show_date_relative in libgit.a(date.o)
“_libintl_gettext”, referenced from:
_warn_on_inaccessible in libgit.a(wrapper.o)
_xgetpwuid_self in libgit.a(wrapper.o)
ld: symbol(s) not found for architecture x86_64
[/cce]
大緻可以看出,是intl相關的庫沒有連結。在gentoo的bugzilla上也查到了類似的bug。按照附件提供的更新檔,需要判斷目前系統為mac的時候,增加-lintl,以連結intl這個庫。
除了這個庫之外,還有一個iconv相關的符号找不到。bug裡面沒有描述。在另一台gentoo的機器上用e-file查詢了之後,發現原生linux的iconv是由glibc提供的。但是prefix是不能自由安裝glibc的庫的。但是系統裡面已經安裝了dev-libs/libiconv這個包,提供了iconv相關的庫。是以和前面一樣,需要手工在連結的時候增加-liconv。
最後修改完的ebuild檔案大緻為:
[cce lang=”diff”]
— 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”
轉載自:https://coolex.info/blog/431.html