Mesa-7.6.1终于发布了。在圣诞节,这份大礼终于进入了portage。我本来emerge了7.7_rc3,偶有白屏的困扰。现在打算整体升级到7.6.1,想不到在编译libdrm等软件的时候,提示缺少libGL.la。郁闷!退回到了7.5.2就没这个问题了。
结果在网上搜到了这篇文章
lafilefixer
于是照着执行了
sudo lafilefixer --justfixit && sudo revdep-rebuild
执行之后libGL.la依然没有出现,但是软件们可以编译了。
仔细对比了一下7.5.2和7.6.1的ebuild,发现新的版本中少了如下内容:
# Install libtool archives
insinto /usr/$(get_libdir)
# Should this use the -L/usr/lib instead of -L/usr/$(get_libdir)?
# Please confirm and update this comment or the file.
doins "${FILESDIR}"/lib/libGLU.la || die "doins libGLU.la failed"
sed /
-e "s:/${libdir}:$(get_libdir):g" /
"${FILESDIR}"/lib/libGL.la /
> "${D}"/usr/$(get_libdir)/opengl/xorg-x11/lib/libGL.la
# On *BSD libcs dlopen() and similar functions are present directly in
# libc.so and does not require linking to libdl. portability eclass takes
# care of finding the needed library (if needed) witht the dlopen_lib
# function.
sed -i /
-e 's:-ldl:'$(dlopen_lib)':g' /
"${D}"/usr/$(get_libdir)/{libGLU.la,opengl/xorg-x11/lib/libGL.la} /
|| die "sed dlopen failed"
所以,不再自动产生libGL.la了。而诸如ATi的fglrx很早就不存在libGL.la了。
为什么原因要放弃libGL.la呢?la是干什么用的?
原来Mesa-7.6及以上版本就不再需要libGL.la,一切全靠libGL.so就行了。