vsomeip 交叉编译

庭中三千梨花树,再无一朵入我心

vsomeip 是 GENIVI 实现的开源 SOME/IP 库,由 C++ 编写,目前主要实现了 SOME/IP 的通信和服务发现功能,并在此基础上增加了一些安全机制。GENIVI是一个联盟组织,由 BMW 倡导,是汽车信息娱乐领域系统软件标准的倡导者,创建基于linux 系统的 IVI 软件平台和操作系统。GENIVI 倡导了很多开源软件项目,比如:DLT、CommonAPI C++、vSOMEIP。

1. 移植vsomeip前需要先移植vsomeip依赖库boost。

 首先下载boost 库源码Boost Version Historyicon-default.png?t=N7T8https://www.boost.org/users/history/

目前GreaterSnow使用的是1_65_1版本。

下载后执行以下命令:

GreaterSnow@GreaterSnow:~/test/boost_1_65_1$ tar -zxvf boost_1_65_1.tar.gz
GreaterSnow@GreaterSnow:~/test/boost_1_65_1$ sudo ./bootstrap.sh --without-libraries=atomic,chrono,context,coroutine,exception,graph,graph_parallel,mpi,wave --prefix=/home/greatersnow/test/boost_165_1/boostsdk

prefix: 要安装的目录

修改编译工具链为交叉编译工具链(project-config.jam)
using gcc : : aarch64-poky-linux-gcc --sysroot=/usr/src/atc-image-ivi-full/sysroots/aarch64-poky-linux ;

./bjam

./bjam install

2. 移植vsomeip

首先下载vsomeip源码GitHub - COVESA/vsomeip: An implementation of Scalable service-Oriented MiddlewarE over IPAn implementation of Scalable service-Oriented MiddlewarE over IP - GitHub - COVESA/vsomeip: An implementation of Scalable service-Oriented MiddlewarE over IPicon-default.png?t=N7T8https://github.com/COVESA/vsomeip

如果github使用时比较卡,则可以将该地址映射克隆到gitee在下载。

下载后执行以下命令:

1. 首先执行tar -zxvf解压,如果直接使用git clone拉取的代码可以略过此步。
2. 进入源码根目录
3. mkdir build 创建编译使用的目录
4. cd build
5. touch ../cross_compile.cmake
6. 向cross_compile.cmake文件中添加以下内容
set(CMAKE_SYSROOT "${SYSROOTS_DIR}")
set(BOOST_ROOT /home/greatersnow/test/boost_1_65_1/boostsdk)
set(Boost_INCLUDE_DIR /home/greatersnow/test/boost_1_65_1/boostsdk/include)
set(BOOST_LIBRARY /home/greatersnow/test/boost_1_65_1/boostsdk/lib)
set(Boost_LIBRARY_DIR /home/greatersnow/test/boost_1_65_1/boostsdk/lib) 

#从来不在指定目录下查找工具程序
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
#只在指定目录下查找库文件
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
#只在指定目录下查找头文件
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
#头文件的路径
include_directories (
   ${SYSROOTS_DIR}/usr/include/
   ${SYSROOTS_DIR}/usr/include/libdrm/
   ${SYSROOTS_DIR}/usr/include/glib-2.0/glib/
   ${SYSROOTS_DIR}/usr/include/glib-2.0/
   ${SYSROOTS_DIR}/usr/lib64/glib-2.0/include/
)

link_directories(
   ${SYSROOTS_DIR}/usr/lib64
)

7. 注意!!!/home/greatersnow/test/boost_1_65_1为刚刚boost移植库的安装位置
8. cmake .. -DENABLE_SIGNAL_HANDLING=1 -DCMAKE_TOOLCHAIN_FILE=../cross_compile.cmake
9. make -j4  -j4或-j8依据自己电脑配置而定

移植时遇到的问题:

1. CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage

新建一个空的11.cmake 文件 然后执行cmake时 添加参数 既cmake .. -DCMAKE_TOOLCHAIN_FILE=../11.cmake

2
CMake Error at CMakeLists.txt:47 (target_link_libraries):
  Cannot specify link libraries for target "   " which is not built by
  this project.


-- Configuring incomplete, errors occurred!

检查下报错地方的书写格式,可能格式有问题 
sh-4.4# ln -s libvsomeip3-cfg.so.3.1.20 libvsomeip3-cfg.so
sh-4.4# ln -s libvsomeip3-cfg.so.3.1.20 libvsomeip3-cfg.so.3
sh-4.4# ln -s libvsomeip3-e2e.so.3.1.20 libvsomeip3-e2e.so
sh-4.4# ln -s libvsomeip3-e2e.so.3.1.20 libvsomeip3-e2e.so.3
sh-4.4# ln -s libvsomeip3-sd.so.3.1.20 libvsomeip3-sd.so
sh-4.4# ln -s libvsomeip3-sd.so.3.1.20 libvsomeip3-sd.so.3
sh-4.4# ln -s libvsomeip3.so.3.1.20 libvsomeip3.so
sh-4.4# ln -s libvsomeip3.so.3.1.20 libvsomeip3.so.3

3 把需要的库放入开发板中,添加软连接后执行ldconfig

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值