星期一, 11月 01, 2010

編譯 GCC cross-compiler 出現 WARNING: `makeinfo' is missing on your system. 解法

如果你在編譯 cross-compiler 出現下列錯誤訊息,請不用驚慌,這是 binutils-2.18 的 bug,據說已經在較新版本中修正。

WARNING: `makeinfo' is missing on your system.  You should only need it if
         you modified a `.texi' or `.texinfo' file, or any other file
         indirectly affecting the aspect of the manual.  The spurious
         call might also be the consequence of using a buggy `make' (AIX,
         DU, IRIX).  You might want to install the `Texinfo' package or
         the `GNU make' package.  Grab either from any GNU archive site.

在 binutils 目錄裡的 configure 與 configure.ac 中搜尋 missing makeinfo 可以找到如下行:

| egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then

很明顯的,這個正規式(regular expression)有點問題,因為他是判斷 1x~3x 或 4.4+ 或 5+ 版本,結果我的 makeinfo 剛好是 4.13!

所以就幫他修改一下改成下面這樣變成判斷 4.x/4.xx 就可以了

| egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[0-9][0-9]*|[5-9])' >/dev/null 2>&1; then

實際上我們只要改 configure 即可,因為 configure.ac 應該是供 auto-tools 來產生 configure 用的,不過為了保險起見還是兩個一起改好了。

因為是用 fgrep 去搜的,一併搜到 gcc-4.2.1 裡的 configure.in 與 configure 裡的正規式也是錯的,順便也改一下。

沒有留言: