Dat*_*Chu 7 c++ linux png opencv dynamic-linking
我有一个应用程序,它依赖于大量的库(不是我们所有的).大多数这些库都是通过包管理器安装的.对于那些没有的,我已经重新编译它们但我仍然得到相同的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
Run Code Online (Sandbox Code Playgroud)
这是一个错误,因为生成的缓冲区为空.我如何知道哪个库链接到新库以及哪个库链接到旧库?
ldd <executable-name>
...
libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f5a0660f000)
...
Run Code Online (Sandbox Code Playgroud)
运行locate png.h给了我几个系统级文件
/usr/include/png.h
/usr/include/libpng12/png.h
Run Code Online (Sandbox Code Playgroud)
所有这些都是1.2.44.
我正在运行Ubuntu 11.04 x86-64.
更新:OpenCV附带自己的libpng版本1.4.3
看起来您的应用程序正在动态链接.so安装在您使用的标头以外的其他位置的库文件。您可以确定您的二进制文件正在获取ldd <binary>哪个.so,然后从该目录(除非它是系统目录)而不是您正在使用的目录中获取头文件。您可以通过-I在编译时更改标志来做到这一点。否则我认为您需要安装libpng-1.4.3以便您可以针对其标头进行编译。
| 归档时间: |
|
| 查看次数: |
10476 次 |
| 最近记录: |