萩萩日記

世界に5人くらい存在するかもしれない僕のファンとドッペルゲンガーに送る日記

fix_libtool_files.sh

Gentoo Linuxでいつものように、

# emerge -Duvt --newuse world
# emerge -Duv --newuse world

なんてことをしていたら

grep: /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.4/libstdc++.la: No such file or directory
/bin/sed: can't read /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.4/libstdc++.la: No such file or directory
libtool: link: `/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.4/libstdc++.la' is not a valid libtool archive
make[4]: *** [libpixbufloader-tiff.la] Error 1
make[4]: Leaving directory `/var/tmp/portage/gtk+-2.4.14/work/gtk+-2.4.14/gdk-pixbuf'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/var/tmp/portage/gtk+-2.4.14/work/gtk+-2.4.14/gdk-pixbuf'
make[2]: *** [all] Error 2 
make[2]: Leaving directory `/var/tmp/portage/gtk+-2.4.14/work/gtk+-2.4.14/gdk-pixbuf'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/portage/gtk+-2.4.14/work/gtk+-2.4.14'
make: *** [all] Error 2

!!! ERROR: x11-libs/gtk+-2.4.14 failed.
!!! Function src_compile, Line 78, Exitcode 2
!!! (no error message)
!!! If you need support, post the topmost build error, NOT this status message.

gtk+コンパイルで失敗するようになってしまい、たしかにちょいと前にgccが3.3.5になったからお探しの「/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.4/libstdc++.la」なんてものは見つからないわけだけど、「libtool: link: 〜」ってあるから、

# emerge libtool

で再度libtoolをインストールしてみたのだけどダメ。もしやと思い、

# env-update && source /etc/profile

なんてこともしたが意味なし。ここでようやくWebで検索してみたところ、

http://www.gentooforum.de/thread.php?threadid=4068

にあるドイツなGentooフォーラムのイッヒやグーテンやモルゲンの森の中に「fix_libtool_files.sh」というファイル名を発見。

# fix_libtool_files.sh 
Usage: fix_libtool_files.sh  [--oldarch ]

    Where  is the version number of the
    previous gcc version.  For example, if you updated to
    gcc-3.2.1, and you had gcc-3.2 installed, run:

      # fix_libtool_files.sh 3.2

    If you updated to gcc-3.2.3, and the old CHOST was i586-pc-linux-gnu
    but you now have CHOST as i686-pc-linux-gnu, run:

      # fix_libtool_files.sh 3.2 --oldarch i586-pc-linux-gnu

    Note that if only the CHOST and not the version changed, you can run
    it with the current version and the '--oldarch ' arguments,
    and it will do the expected:

      # fix_libtool_files.sh `gcc -dumpversion` --oldarch i586-pc-linux-gnu


# fix_libtool_files.sh 3.3.4
 * Scanning libtool files for hardcoded gcc library paths...
 *   Scanning /lib...
 *   Scanning /usr/lib...
 *     FIXING: /usr/lib/libtiff.la ... [v]
 *     FIXING: /usr/lib/gdk-pixbuf/loaders/libpixbufloader-tiff.la ... [v]
 *     FIXING: /usr/lib/libgmpxx.la ... [v]
 *     FIXING: /usr/lib/libMagick++.la ... [v]
 *     FIXING: /usr/lib/galeon/components/libgaleon-xpcom.la ... [v]
 *     FIXING: /usr/lib/python2.3/site-packages/_lcms.la ... [v]
 *     FIXING: /usr/lib/libSDL.la ... [v]
 *   Scanning /opt/blackdown-jdk-1.4.2.01/jre/lib/i386...
 *   Scanning /usr/X11R6/lib...
 *   Scanning /usr/games/lib...
 *   Scanning /usr/local/lib...
 *   Scanning /usr/qt/3/lib...

うまくいきましたとさ。