いけむランド

はてダからやってきました

Cygwin Ports のライブラリをリンクする時にたまにあること

たまにリンクエラーがでる。

/usr/bin/grep: /usr/lib/gcc/i686-pc-cygwin/4.3.2/libstdc++.la: No such file or directory
/usr/bin/sed: can't read /usr/lib/gcc/i686-pc-cygwin/4.3.2/libstdc++.la: No such file or directory
libtool: link: `/usr/lib/gcc/i686-pc-cygwin/4.3.2/libstdc++.la' is not a valid libtool archive


Cygwin Ports のライブラリのいくつかが gcc-4.3.2 でビルドされているのに対して、cygwin 公式の gcc の最新版は 4.3.4 であるため、パスが違うことで libstdc++ を発見できなくなっている。

原因はリンクしようとしているライブラリの la (/usr/lib/lib*.la) に gcc のバージョン番号を含んだパスがハードコーディングされているためである。よって、このバージョン番号をインストールされている libstdc++ のパスに変更すれば、無事にリンクできるようになる。

# Libraries that this one depends upon.
dependency_libs=' /usr/lib/gcc/i686-pc-cygwin/4.3.2/libstdc++.la'
                                            # ^^^^^ ここをインストールされている libstdc++ のパスに修正する。