N系统大全 - 最好的系统光盘下载网站!

当前位置:首页 > 系统教程 > Linux教程 > 详细页面

Gentoo升级后libpng无法正常编译怎么办?

时间:2015-06-04 来源:N系统大全

  在Gentoo升级之前,用户还能能正常使用libpng,而在升级Gentoo系统后,不少用户出现了libpng编译不正常的情况,大量包无法编译,下面小编就给大家介绍下解决libpng编译不正常的方法。

Gentoo升级后libpng无法正常编译怎么办?

  升级完系统之后,就提示libpng升级,需要重新emerge @preserved-rebuild,但很多包完全编译不过了,以下提供解决方案。

  1、gnome-extra/libgda编译失败

  在链接的时候,会提示-lpng14找不到,很明显是因为libpng升级到1.5导致的。但是,搜索了libgda里面的所有Makefile文件,都没有发现有地方写名链接libpng14这个动态链接库的地方。最后找到的原因是因为/usr/lib64/目录中有很多xxx.la文件,是libtool用来管理依赖用的,其中有些动态链接库里面的依赖写名了-lpng14。

  找到了原因后,首先通过grep命令找到所有写死-lpng14的地方,重新emerge这些库。不过这里发现有些库重新emerge了,依赖还是没有纠正。最后通过手工改这些文件,改成-lpng15。

  重新emerge就OK了。

  2、opencv编译失败

  opencv编译失败,提示的是error:‘MAX_MEM_LEVEL’ was not declared in this scope等错误。是因为libpng1.5.x将原先暴露出来的png文件结构都隐藏了,头文件里面只有一个预先声明和一堆typedef。这些应该是原来在定义这些png图片结构的时候,依赖的zlib,现在没法间接依赖了。

  解决方法是写个补丁,强制modules/highgui/src/grfmt_png.cpp这个文件include zlib.h这个头文件,补丁内容如下:

  — modules/highgui/src/grfmt_png.cpp.old 2011-09-19 19:36:49.759516862 +0800

  +++ modules/highgui/src/grfmt_png.cpp 2011-09-19 19:28:04.302185712 +0800

  @@ -55,6 +55,7 @@

  #include 《libpng/png.h》

  #else

  #include 《png.h》

  +#include 《zlib.h》

  #endif

  #include “grfmt_png.hpp”

  写个local portage,编译好了opencv

  另外还有wxPython,这个目前真没办法了,也是因为libpng1.5.x隐藏了png图片结构体,导致原来直接通过结构体指针访问结构体内容全部出错,无补丁。

  上面就是Gentoo升级后libpng无法编译的解决方法介绍了,本文一共介绍了2种情况的解决方法,可根据用户具体情况来解决问题。

相关信息

  • Linux系统下tar压缩解压缩命令详解

    tar,是Linux系统的一个命令,非常好用!如果你对tar命令不甚了解的话,可以看看小编为大家整理的tar压缩解压缩命令详解。...

    2018/03/05

  • Linux下的crontab定时执行任务命令详解

    crontab命令主要用于设置周期性被执行的指令,今天小编将给大家详细讲解Linux下的crontab定时执行任务命令,有兴趣的伙伴可以阅读文章了解!...

    2018/03/05

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载

公众号