I am using the nvcr.io/nvidia/l4t-tensorrt:r8.4.1-runtime docker image on Orin. Previously I was using 8.4.0 and all was well. However, now when I compile my stuff I get:
/usr/bin/ld: /usr/lib/aarch64-linux-gnu/libnvinfer.so.8: undefined reference to `nvdla::IProfile::setUseSoftMaxOptz(bool)'
/usr/bin/ld: /usr/lib/aarch64-linux-gnu/libnvinfer.so.8: undefined reference to `nvdla::INetwork::addSlice(nvdla::ITensor*, nvdla::Weights, nvdla::Weights, nvdla::Weights, nvdla::Weights, nvdla::SliceLayerMode)'
Any ideas what would cause this? I have searched for these symbols everywhere but only see them in libnvinfer so I don’t know what else to link to…
It is a DLA symbol, a backend library used by the TensorRT.
Since it’s a runtime container, it doesn’t include the header for developing.
Did you compile the application with nvcr.io/nvidia/l4t-tensorrt:r8.4.0-runtime successfully?
If yes, did you mount the required headers manually?
Any chance for a further response here? I’ve confirmed that:
libnvinfer.so 8.4.0 does not have reference to the symbol
libnvinfer.so 8.4.1 does reference the symbol
So this is new for 8.4.1. My question is simply this: What lib do I need to link to to get the definition?
This is currently blocking our project since the 8.4.0 docker image is now broken and 8.4.1 appears broken in this new way. Any help would be apprecaited!
Followup: Finally, flashing my Orin with the latest Jetpack resolved this issue. I guess the host system needs also have TensorRT 8.4.1 for this to work? That makes siome sense, though the error I was getting is still confusing…
Sorry for the late reply.
NVDLA library is integrated into the L4T OS.
So when you use an old JetPack with TensorRT 8.4.1, TensorRT cannot find the correct library which reports some symbol issue.