I am creating a .appimage in my system for an application which uses libraries from openvino..When deploying that on another system..it gives me symbol lookup error in opencv Mat() function..

The distributed system has openvino installed but it is a older version than what I used..So when running..the AppImage or AppRun from AppDir folder uses the opencv libraries from the system(which is older one)

Do..AppImage always prefer system libraries first..and comes to bundled libraries if they are not present in system

Error is

./Check-Video-x86_64.AppImage 
./Check-Video-x86_64.AppImage: symbol lookup error: ./Check-Video-x86_64.AppImage: undefined symbol: _ZN2cv3MatC1Ev

Any insights about appImage library preferences and solving the error?

1

There are 1 best solutions below

0
On

It uses both, with preference on the bundled ones. So if a given .so is bundled it will be used. Usually low level libraries such as glibc and drivers are not included. This is a gamble looking for a better portability and reducing the bundle size. Notice that depending on the method (or tool) used to create the AppImage this may vary.

You can use the debug feature of the system linker to know which files are being really loaded as follows:

LD_DEBUG=libs ./yourapp.AppImage