日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Gentoo升級后libpng無法正常編譯怎么辦?

在Gentoo升級之前 , 用戶還能能正常使用libpng , 而在升級Gentoo系統(tǒng)后 , 不少用戶出現(xiàn)了libpng編譯不正常的情況 , 大量包無法編譯 , 下面小編就給大家介紹下解決libpng編譯不正常的方法 。

Gentoo升級后libpng無法正常編譯怎么辦?


升級完系統(tǒng)之后 , 就提示libpng升級 , 需要重新emerge @preserved-rebuild , 但很多包完全編譯不過了 , 以下提供解決方案 。
1、gnome-extra/libgda編譯失敗
在鏈接的時候 , 會提示-lpng14找不到 , 很明顯是因為libpng升級到1.5導(dǎo)致的 。但是 , 搜索了libgda里面的所有Makefile文件 , 都沒有發(fā)現(xiàn)有地方寫名鏈接libpng14這個動態(tài)鏈接庫的地方 。最后找到的原因是因為/usr/lib64/目錄中有很多xxx.la文件 , 是libtool用來管理依賴用的 , 其中有些動態(tài)鏈接庫里面的依賴寫名了-lpng14 。
找到了原因后 , 首先通過grep命令找到所有寫死-lpng14的地方 , 重新emerge這些庫 。不過這里發(fā)現(xiàn)有些庫重新emerge了 , 依賴還是沒有糾正 。最后通過手工改這些文件 , 改成-lpng15 。
重新emerge就OK了 。
2、opencv編譯失敗
opencv編譯失敗 , 提示的是error:‘MAX_MEM_LEVEL’ was not declared in this scope等錯誤 。是因為libpng1.5.x將原先暴露出來的png文件結(jié)構(gòu)都隱藏了 , 頭文件里面只有一個預(yù)先聲明和一堆typedef 。這些應(yīng)該是原來在定義這些png圖片結(jié)構(gòu)的時候 , 依賴的zlib , 現(xiàn)在沒法間接依賴了 。
【Gentoo升級后libpng無法正常編譯怎么辦?】 解決方法是寫個補丁 , 強制modules/highgui/src/grfmt_png.cpp這個文件include zlib.h這個頭文件 , 補丁內(nèi)容如下:
— 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圖片結(jié)構(gòu)體 , 導(dǎo)致原來直接通過結(jié)構(gòu)體指針訪問結(jié)構(gòu)體內(nèi)容全部出錯 , 無補丁 。
上面就是Gentoo升級后libpng無法編譯的解決方法介紹了 , 本文一共介紹了2種情況的解決方法 , 可根據(jù)用戶具體情況來解決問題 。

    推薦閱讀