我的一个应用程序依赖于大量的库(难道不是吗)。其中大多数库都是通过包管理器安装的。对于那些没有通过包管理器安装的库,我已经重新编译了它们,但我仍然收到相同的libpng不兼容错误。
libpng warning: Application was compiled with png.h from libpng-1.2.44
libpng warning: Application is running with png.c from libpng-1.4.3
这是一个错误,因为生成的缓冲区为空。我如何知道哪个库链接到新的库,哪个库链接到旧的库?
ldd <executable-name>
...
libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f5a0660f000)
...
在我的系统上运行locate png.h
会给我返回一些系统级别的文件。
/usr/include/png.h
/usr/include/libpng12/png.h
所有这些都是1.2.44版本。
我正在运行Ubuntu 11.04 x86-64。
更新:结果发现OpenCV附带了自己的libpng版本,为1.4.3。