1、交叉编译cuda+TensorRT时,链接时报错


找不到libcuda.so,但在当前目录确实已经存在该库了,但是就是找不到。



原因: 

    由于交叉编译采用了docker的方式,并利用了CMake的:CMAKE_SYSROOT 特性,即

    cmake  -DCMAKE_TOOLCHAIN_FILE=/home/xi/toolchain.cmake  ,而toolchain.cmake中指定了:

   set(CMAKE_SYSROOT "/home/aarch64rootfs")  # sysroot路径


  而我当时的做法是,将当前的目录挂载到docker内,这样外面的宿主机与里面的docker就可以共享当前目录,这样很方便,因此当时也把从Nvidia AGX Orin内的cuda和tensorRT的库拷贝到当前目录,作为依赖库,并指定了链接库的路径,编译时,g++文件检查通过了,但链接时,由于指定了CMAKE_SYSROOT因此不会链接当前的目录下的cuda和tensorRT库.


解决办法:

进入docker内部,将当前的依赖库全部拷贝至CMAKE_SYSROOT指定的根目录,并重新指定链接库的路径即可。



标签: none

评论已关闭