文档声明:
以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正。并且该文档在后期会随着学习的深入不断补充完善。感谢各位的参考查看。
笔记资料仅供学习交流使用,转载请标明出处,谢谢配合。
如果存在相关知识点的遗漏,可以在评论区留言,看到后将在第一时间更新。
作者:Aliven888
项目场景:
最近在做一个自动驾驶的中间件功能,数据传输需要使用 vsomeip 开源库,实现点对点的数据的功能,在学习的过程中,演示官方demo时遇到了这样的问题。问题描述:
根据官方文档的提示,在运行下面的两个启动脚本时,遇到到了如下问题。
# 执行脚本
# HOST1运行service:
# 操作前需要将 helloworld-local.json 文件拷贝到当前目录中。
env VSOMEIP_CONFIGURATION=./helloworld-local.json \
VSOMEIP_APPLICATION_NAME=hello_world_service \
./hello_world_service
# HOST1运行client:
env VSOMEIP_CONFIGURATION=./helloworld-local.json \
VSOMEIP_APPLICATION_NAME=hello_world_client \
./hello_world_client
报错描述:
原因分析:
查了很多资料,并且查看了进程文件的动态库链接后发现,是 vsomeip 的动态库没有加载(指定路径)。因为我没有进行安装(个人不喜欢把很多东西安装到系统中),而且在使用时也没有指定 vsomeip 的路径,所以导致找不到。解决方案:
这个问题的解决方案有两个:方案一: 在编译 vsomeip 后,将其安装到系统目录中(个人不喜欢这种方式)。
>> cd build
>> make install
# 为了避免安装后动态库无法自己链接,可以执行一下下面的语句
>> sudo ldconfig
方案二: 指定 vsomeip 的动态库路径,这样在运行时,进程就能将其加载成功了。
路径根据自己的实际情况来决定,比如我存放的路径是:/home/aliven/Documents/Aliven/vsomeip/build
export LD_LIBRARY_PATH=":/usr/local/lib/:/home/aliven/Documents/Aliven/vsomeip/build/"