我需要将libpng从1.2版升级到1.5版。我需要这样做:libpng warning: Application built with libpng-1.2.26 but running with 1.5.2。我正在使用Lubuntu 11.10并且在Canonical存储库中,libnpg 1.5仍然没有发布,尽管在Debian上有测试包(http://packages.debian.org/search?keywords=libpng),起初它们适合我。我将Debian存储库添加到Synaptec并且我能够安装libpng15,但这些软件包不能替代libpng12,在编译一些源代码时,IDE使用libpng12而不是libpng15。
为了解决这个问题,我下载了libpng15 deb软件包,解压缩并更改了替换, Conflicts 和提供标签的<使用 libpng15 文本控制文件。然后,我执行了修改后的deb,但我得到的只是GDebi错误和一般系统故障,因为(我认为)libpng12已卸载而没有替换,Lubuntu严重依赖它,这迫使我重新安装Lubuntu因为计算机没有不能在Linux中再次启动。是的,这个解决方案不是我想的最好的方式。
那么,有没有办法升级一个软件包并替换旧版本的旧版本,但它仍然不在分发库中?我找到了ubuntu repository for libpng和{{3 }}。虽然到目前为止还不是很明确。
答案 0 :(得分:3)
我还没有找到如何升级和替换新版本尚未在分发存储库中的软件包。但我已经意识到,如果某个库X依赖于其他库Y的给定版本,除非你对X的源代码进行一些更改,否则无法更改该依赖的版本,也就是说,库X是重新编译以指向所需的版本(通常在某些配置标记的帮助下)。尽管可以通过修改库Y的符号链接以指向较新的版本来完成某些技巧。然后,编译器会抱怨并要求旧版本。
现在看起来很明显。但是,如果必须重新编译的软件需要很长时间,具有未解决的依赖性或产生错误,那么无论是否违反热力学定律,都会尽量避免编译。
所以在我的情况下我必须重新编译Qt并使用-system-libpng配置标签Qt理解它必须使用系统libpng库,而不是内置库。经过8个小时的编译,我得到了一个成功构建,解决了这个libpng问题。
感谢大家的评论和建议。
答案 1 :(得分:1)
对于您正在经历的所有麻烦,简单地从源代码编译可能更容易,并且安装到/usr/local
(而不是/usr
,就像deb一样)。我已经为我编译的程序(使用make build systems)的几个库依赖项做了这个,没有任何麻烦。但是,听起来您正在编译的程序在选择正确版本的软件包时遇到了问题。在我看来,这是真正的问题。支持同时安装多个版本的库,但在混合Debian和Ubuntu存储库的情况下可能不是apt。
编译程序时,请使用gcc -lpng15
代替-lpng
。根据gcc info手册,-lname
选项会使链接器在lib文件夹中查找libname.a
。在我的系统(Ubuntu 10.04)上,libpng.a
是libpng12.a
的符号链接。这就是你的程序选择错误的库的原因。
答案 2 :(得分:0)
尝试添加此ppa:https://launchpad.net/~linaro-maintainers/+archive/overlay。它包含了Oneiric的libpng1.5。
您可以通过运行
来安装它sudo add-apt-repository ppa:linaro-maintainers/overlay
sudo apt-get update
sudo apt-get install libpng1.5
答案 3 :(得分:0)
要正确链接libpng15
,您还需要安装libpng15-dev
。