2010-01-22 43 views
0

我有源代码不是由我写的,我无法联系作者。它是用C++编写的,需要libjpeg,boost和Intel Performance Primitives。英特尔性能原语(IPP)运行时错误

编译是一件苦差事,但经过几天的解决问题后,编译完成。现在,我收到以下运行时错误:error while loading shared libraries: libippi.so.5.1: cannot open shared object file: No such file or directory。无论命令行参数如何,都会立即发生错误。

我下载了Ubuntu 9.04的试用版IPP。在/opt/intel/ipp/6.1.2.051/ia32/sharedlib/下,我看到一堆以lib*libippi*开头的文件,包括libippi.so.6.1。所以我想我会尝试创建一个指向libippi.so.6.1的链接libippi.so.5.1,但这不起作用。我试图在本地目录中创建一个类似的链接,但这也不起作用。

我对这些库都不熟悉,所以我不知道还有什么可以尝试的。我无法在网络或SO上找到任何解决方案。如果你能帮助我解决这个错误,我将不胜感激。谢谢。

回答

1

看起来应用程序是针对较早版本的IPP编译的。由于6.1.2被称为libippi.so.6.1,所以它可以像安装IPP 5.1.x一样简单(尽管linux库版本并不像这样简单)。

如果您为intel非易失性存储器创建登录,商业IPP下载区,你可以四处挖掘,看看他们是否提供老版本。

另外,做一个快速的谷歌搜索,我发现这个FTP站点似乎有它但注意我还没有实际下载或试过这段代码,并且无法验证这是否是合法的镜像或者它是否原英特尔库,则需要使用此代码

http://21cma.bao.ac.cn/software/21cma/intel/ipp-5.1.1.005/

注意,在一个现代的Ubuntu使用IPP的此旧版本之前,做你自己的尽职调查,你可能需要获取较旧版本的它依赖的其他库(要求在发行说明中列出),甚至只在受支持的Linux的chroot下运行发行至少要测试它是否能解决你的问题。

+0

谢谢你的快速反应帮助。免责声明。可能的替代解决方案是找到引用IPP 5.1的程序部分,并简单地将其“更改”为6.1,或者这些库有显着不同?无论是在C++源代码,头文件或makefile中? –

+0

这可能是可能的,恐怕我不知道对API变化的程度发表评论。但是,如果你从源代码编译6.1并仍然依赖6.1中未包含的libppi,那么我会相信树中有一些组件不是从源代码完全构建的,而是针对不同的版本。你可能想要用ldd来查看对libppi.so.5.1的依赖是来自你的主应用程序还是来自它链接的库之一。还要检查你的make文件以引用libppi并查看你是否找到了引用 – bdk