关于RKMPI使用疑问

  • subs666 wrote: 2024-05-06 2:46 似乎我make生成的和make insatll生成可执行文件有点区别,make insatll的可执行文件通过ldd查看加载的相关rknn库是make insatll的lib中的,而make的可执行文件ldd加载的在usr/lib下。我试过用make生成的可执行文件替换make install中的可执行文件运行,会报错rga版本错误,即使我把make insatll的lib下的库替换/usr/lib的,也是跑不起来,通过export LD_LIBRARY_PATH=./lib/却可以跑起来。 通过查看CMakeLists.txt并没有发现有什么特殊操作。希望您可以回复我一下。
    您好,由于RKMPI相关的库目前Rockchip还在更新,所以在为了避免版本不兼容的问题我们没有将对应的库移植到rootfs中使用,而是采取打包到make install 指定文件夹中的方式,通过CMakeLists.txt 中的

    Code: Select all

    set(CMAKE_INSTALL_RPATH "$ORIGIN/lib")
    
    来实现,避免先链接到系统默认的/usr/lib和/lib 中相关库出现版本不一致的问题,同时可执行程序也需要一些其他的库比如libc.so等,所以我在CMAKE_EXE_LINKER_FLAGS 中也添加了-rpath-link来指定/usr/lib,两个在优先级上不同,CMAKE_INSTALL_RPATH的优先级大于-rpath-link的优先级。

    希望这可以解决您的问题。
  • 嗯呢好的,非常感谢您解答了我心中的疑惑。