在Gentoo升级之前 , 用户还能能正常使用libpng , 而在升级Gentoo系统后 , 不少用户出现了libpng编译不正常的情况 , 大量包无法编译 , 下面小编就给大家介绍下解决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 , 现在没法间接依赖了 。
【Gentoo升级后libpng无法正常编译怎么办?】 解决方法是写个补丁 , 强制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种情况的解决方法 , 可根据用户具体情况来解决问题 。
推荐阅读
- 慈禧太后的英文女翻译是谁
- 孩子脾气大总爱生气?安抚情绪后再对症下“药”
- 吃完饭后多久可以喝酸奶 饭后多久可以喝酸奶
- 怎么设置显示文件后缀名
- 离婚后不给抚养费违法吗
- 霸道摊主抢人生意,不料被捉弄,最后使出大绝招结局出乎意料
- 精绝古城最后结局解析三人为什么没有死 精绝古城最后结局解析
- 怀孕后一般呕吐多长时间 怀孕多久会想吐
- 面粉揉好后要发酵多久 面粉发酵要多久
- 胶质瘤二级术后生存期 胶质瘤2级能活多久