Hello,
I'm developing an UDO for my network to run on device (aarch64-oe-linux-gcc9.3). The implemmentation works perfectly when I tested on my host pc in x86.
When I tried to use snpe-net-run to run my network with my UDO implementation on the device (i tried all runtimes), it stated that there is no libc.so, libm.so, and libdl.so on my device. Knowing that my device is in linux and i found libc.so.6 (glibc) on my device.
Hi
Try to run the snpe-net-run command, where your .so file is present.
Hi,
I think it is not this case. The libc.so, libm.so and libdl.so are the C packages and they have nothing to do with my running because they should be dynamically linked to my .so during the compilation of UDO package. In my opinion, the problem comes from the way qualcomm compiles the packages.
More precisely: When we compile UDO package for DSP runtime, SNPE uses android-ndk to compile the Registry file (libUDO...Reg.so). The android-ndk uses his own libc, libm and libdl (called bionic libc which are more suitable for mobile device) during the compilation. On linux, we dont have bionic libc (libm or libdl) but GNU libc (libm, libdl). That's why when i do snpe-net-run with the libUDO...Reg.so, SNPE tries to find dynamic linked libraries during the compilation (bionic libc, libm and libdl) which dont exist on linux system.
My solution: Compile my own libUDO...Reg.so using cross-compiler.
Dear developer,
SNPE has some scripts to check the environments. Please help to take a look at the relating SNPE docs for more details.
BR.
Wei