0

I have the next problem, I'm developing a cuda application for the jetson TX2 board. All the development it's done in a ubuntu machine and then I run the program remotely in the jetson.

I'm using CUDA 10.0 and the PCL library 1.9.1 that was built from sources in the jetson with CUDA and QT5 features. I also compiled from sources in the jetson the VTK library and boost 1.65. Everything compiles fine but every time I try to run my program in the jetson I get the next error:

error while loading shared libraries: libcufft.so.9.0

Because I'm using CUDA 10 I don't have this library and in code I don't any reference to cufft so I guess that a library I'm using is creating this dependency. What I want to know is if there is some way to know what part of the code or what library could be creating this dependency in order to remove the error.

I have tried the command LDD but this command tell me that the program needs the cufft.so.9.0 library but not tell me which part of the code could be creating this dependency.

Next I summarize all the libraries I'm using:

PCL 1.9.1 VTK 8.0 Eigen Libflann 1.9 Patate library

I'm also using Nvidia nsight eclipse.

Thank you!

talonmies
  • 70,661
  • 34
  • 192
  • 269
  • If you enable verbose linker outputs, your linker will tell you why it needed that shared library. – Mansoor Mar 30 '19 at 00:41
  • I have tried --verbose and --trace. But I don't see anything in the output about the cufft library. I'm also using the option --unresolved-symbols=ignore-in-shared-libs and even removing this option I don't see anything about the cufft lib – Diego Aguirre García Mar 30 '19 at 01:02
  • I haven't tried that myself with GCC/Clang but for MSVC, it will list every symbol it was looking for, where it searched and which location it got it from. You could do an `nm` on your executable, see which symbols are as of undefined, and cross-reference those against symbols in libcufft.so.9.0. I think cufft may be the CUDA FFT maths library, so it maybe used by multiple other libs. – Mansoor Mar 30 '19 at 07:44
  • Run `ldd -v` on your program. That will show you the shared libraries that your program uses directly. (It will also show you the libraries that each of those libraries needs.) Then run `ldd -v` on each of the shared libraries. Repeat until you find the library (maybe more than one) that needs libcufft. – ottomeister Mar 30 '19 at 22:07

0 Answers0