Inconsistent soname convention between libnvinfer.so and libnvparsers.so

The soname of libnvinfer.so.4.x.x includes only the major version number libnvinfer.so.4
The soname of libnvparsers.so.4.x.x is the exact version libnvparsers.so.4.x.x

I have one device at 4.0.4 and another at 4.1.3.

This means libnvinfer.so loads fine but libnvparsers.so needs the exact version.

Is there any reason for this difference?

Hi,
After installing via Jetpack 3.3, both libnvinfer.so and libnvparsers.so are linked to 4.1.3

nvidia@tegra-ubuntu:/usr/lib/aarch64-linux-gnu$ ls -all libnvinfer*
-rw-r--r-- 1 root root 101771632 Jun 19  2018 libnvinfer.a
-rw-r--r-- 1 root root   2439048 Jun 19  2018 libnvinfer_plugin.a
lrwxrwxrwx 1 root root        26 Jun 19  2018 libnvinfer_plugin.so -> libnvinfer_plugin.so.4.1.3
lrwxrwxrwx 1 root root        26 Jun 19  2018 libnvinfer_plugin.so.4 -> libnvinfer_plugin.so.4.1.3
-rw-r--r-- 1 root root   2061388 Jun 19  2018 libnvinfer_plugin.so.4.1.3
lrwxrwxrwx 1 root root        19 Jun 19  2018 libnvinfer.so -> libnvinfer.so.4.1.3
lrwxrwxrwx 1 root root        19 Jun 19  2018 libnvinfer.so.4 -> libnvinfer.so.4.1.3
-rw-r--r-- 1 root root  77308812 Jun 19  2018 libnvinfer.so.4.1.3
nvidia@tegra-ubuntu:/usr/lib/aarch64-linux-gnu$ ls -all libnvparsers.*
-rw-r--r-- 1 root root 4981708 Jun 19  2018 libnvparsers.a
lrwxrwxrwx 1 root root      21 Jun 19  2018 libnvparsers.so -> libnvparsers.so.4.1.3
lrwxrwxrwx 1 root root      21 Jun 19  2018 libnvparsers.so.4 -> libnvparsers.so.4.1.3
-rw-r--r-- 1 root root 3968444 Jun 19  2018 libnvparsers.so.4.1.3

Do you install whole system via Jetpack?

Those are file names.

To get the soname, do this

objdump -p libnvinfer.so.4.1.3 | grep SONAME

objdump -p libnvparsers.so.4.1.3 | grep SONAME

Hi,
we can see your observation.

nvidia@tegra-ubuntu:/usr/lib/aarch64-linux-gnu$ objdump -p libnvinfer.so.4.1.3 | grep SONAME
  SONAME               libnvinfer.so.4
nvidia@tegra-ubuntu:/usr/lib/aarch64-linux-gnu$ objdump -p libnvparsers.so.4.1.3 | grep SONAME
  SONAME               libnvparsers.so.4.1.3

It seems not to be an issue. These prebuilt libs are about TensorRT functions. If you install whole system via Jetpack, it should run well.

But there is a problem with the apps linked against these libs.

Those apps with dependencies on libnvinfer.so but not on libnvparsers.so do not need to be rebuilt for differences in the minor version number.

Those apps with a dependency libnvparsers.so do.

Hi,
We have below samples of using TensorRT:

tegra_multimedia_api\samples

tegra_multimedia_api\samples\04_video_dec_trt
tegra_multimedia_api\samples\backend
tegra_multimedia_api\samples\frontend

4_video_dec_trt
tegra_multimedia_api\samples\backend
tegra_multimedia_api\samples\frontend

If possible, please share us patch and steps so that we can reproduce the issue on r28.2.1.

I think the issue is that the SONAME should not include minor release and patch level. For example, the library build was probably incorrect if any “something.so.4.1.3” does not have SONAME “something.so.4”. The extra details cause a compatible library to be marked as incompatible when it is only a minor update following the same API.

We have confirmed SONAME of libnvparsers.so is exact version in TensorRT 3 and TRT 4. It is fixed in TRT 5.