tags:

views:

129

answers:

1

I have source code that was not written by me, and I cannot contact the author. It is written in C++ and requires libjpeg, boost, and the Intel Performance Primitives.

Compilation was a chore, but after days of problem solving, it compiles. Now, I get the following runtime error: error while loading shared libraries: libippi.so.5.1: cannot open shared object file: No such file or directory. The error occurs immediately regardless of the command line arguments.

I downloaded the trial version of IPP for Ubuntu 9.04. Under /opt/intel/ipp/6.1.2.051/ia32/sharedlib/, I see a bunch of files beginning with lib* and libippi*, including libippi.so.6.1. So I thought I would try to create a link libippi.so.5.1 that points to libippi.so.6.1, but that doesn't work. I tried creating a similar link in the local directory, and that does not work either.

I am not familiar with any of these libraries, so I don't know what else to try. I could not find any solutions on the net or SO. If you could kindly help me fix this error, I would greatly appreciate it. Thank you.

+1  A: 

Looks like the app is compiled against an older version of IPP. Since 6.1.2 is called libippi.so.6.1, it may be as simple installing IPP 5.1.x (though linux library versioning isn't as simple as this.)

If you create a login for the intel non-commercial IPP download area, you can dig around and see if they offer older builds.

Alternatively, doing a quick google search I found this FTP site which seems to have it but note I have not actually downloaded or tried this code, and can not verify if this is a legal mirror or not or if it is the original Intel libraries, you will need to do your own due dilligence before using this code

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

Note that to use this older version of IPP in a modern Ubuntu, you may need to get older versions of other libraries it depends on (the requirements are listed in the Release Notes), or even just run it under a chroot of a supported Linux Distro at least to test if it fixes your issue.

bdk
Thank you for the quick response. Disclaimer noted. Might an alternate solution be to find the portions of the program that reference IPP 5.1 and simply "change" it to 6.1, or are the libraries that dramatically different? Either in the C++ source, header files, or makefile?
Steve
That may be possible, I'm afraid I don't know enough to comment on the extent of the API changes. However, if you compiled from source against 6.1 and still got a dependency on a libppi that is not included in 6.1, leads me to believe that there is some component in the tree that is not being built completely from source, but is precompiled against a different version. You may want to dig around with ldd to see if the dependency on libppi.so.5.1 comes from your main app or from one of the libraries it links in. Also scour your make files for references to libppi and see if you find a reference
bdk