VSOMEIP在Linux系统下的编译

本文详细介绍了如何在Linux系统中编译VSOMEIP库,包括下载资源、编译boost库和VSOMEIP库的步骤,以及编译过程中涉及的shell脚本解释。通过执行两个自动化脚本,可以完成VSOMEIP的编译,并提供了导入环境变量的脚本以备交叉编译使用。
摘要由CSDN通过智能技术生成

VSOMEIP在Linux系统下的编译

简述

此章记录在编译和使用VSOMEIP中的一些过程,供以后查阅

资源下载

VSOMEIP的源代码链接在下面,里面包含了vsomeip源码、boost源码以及自动编译的自动化脚本(shell脚本)。
https://download.csdn.net/download/merrycherrytree/86782579?spm=1001.2014.3001.5503

资源介绍

废话不多说,开始正题,资源下载到Linux系统中,放入你想放的文件夹下,解压出来是:
(1)compressed:这个文件夹下面放着的是boost和vsomeip的源代码。如需别的版本可以将里面的源代码替换掉
在这里插入图片描述
(2)build_boost.sh:这个文件夹下放的是解压和编译boost的自动化脚本。

#!/bin/sh

BASE_DIR=`pwd`
BUILD_HOST="none"
NONESTR="none"
BOOST=boost_1_72_0
INSTALL_DIR=${BASE_DIR}/install/${BOOST}

echo "start mkdir..."
cd ${BASE_DIR}
mkdir install source -p
echo "end mkdir..."

echo "start decompress..."
cd ${BASE_DIR}/compressed
tar -xf ${BOOST}.tar.gz -C ../source
echo "end decompress..."

echo "start config..."
cd ${BASE_DIR}/source/${BOOST}
./bootstrap.sh \
	--with-libraries=system,thread,log \
	--prefix=${INSTALL_DIR}
	
if [ ${BUILD_HOST} != ${NONESTR} ];then
	echo "111111"
	sed -r -i "s#using gcc ;#using gcc : arm : ${BUILD_HOST}-gcc ;#" project-config.jam
fi
echo "end config..."

echo "--- make start ---"
cd ${BASE_DIR}/source/${BOOST}
./b2 link=shared -j4 install 2>&1 | tee ./build.log
echo "--- make end ---"

cd ${BASE_DIR}

这里我是编译到电脑上,如果想要在自己的开发板上,令BUILD_HOST=编译工具链的地址就行,后面对这个变量做了判断的。
例:BUILD_HOST=/home/naiine/work/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu
这里后面的一坨是我嵌入式板子的编译工具链。

这里shell脚本每个阶段都echo出来了,主要功能就是解压源码包并且编译源码,然后创建install和source两个文件夹,source放置解压后的源码和vsomeip代码,install是把boost库安装到这个文件夹中,如果默认安装好像是在/usr/local/lib里,不过卸载的时候不是很方便找。

(3)build_someip.sh:这个文件是编译vsomeip的shell脚本。

#!/bin/sh

BASE_DIR=`pwd`
BUILD_HOST="none"
NONESTR="none"
BOOST=boost_1_72_0
SOMEIP=vsomeip-master
INSTALL_DIR=${BASE_DIR}/install

echo "start mkdir..."
cd ${BASE_DIR}
mkdir install source -p
echo "end mkdir..."

echo "start copy..."
cd ${BASE_DIR}/compressed
cp ${SOMEIP} ../source -r
echo "end copy..."

echo "start config..."
cd ${BASE_DIR}/source/${SOMEIP}
mkdir build -p
cd build

if [ ${BUILD_HOST} != ${NONESTR} ];then
	cmake -DCMAKE_C_COMPILER=${BUILD_HOST}-gcc \
		-DCMAKE_CXX_COMPILER=${BUILD_HOST}-g++ \
		-DBOOST_ROOT=${INSTALL_DIR}/${BOOST} \
		-DCMAKE_INSTALL_PREFIX:PATH=${INSTALL_DIR}/${SOMEIP} \
		-DENABLE_SIGNAL_HANDLING=1 \
		..
else
	cmake -DBOOST_ROOT=${INSTALL_DIR}/${BOOST} \
		-DCMAKE_INSTALL_PREFIX:PATH=${INSTALL_DIR}/${SOMEIP} \
		-DENABLE_SIGNAL_HANDLING=1 \
		..
fi
echo "end config..." 

echo "start make..."
cd ${BASE_DIR}/source/${SOMEIP}/build
make clean
make -j4 2>&1 | tee ./build.logs
echo "end make..."

cd ${BASE_DIR}

这个脚本就是编译vsomeip的shell脚本,如果想要交叉编译的话也是把BUILD_HOST这个变量修改一下就行,主要注意的地方就是cmake的参数,这里要指定boost库的安装路径,也就是BOOST_ROOT这个参数需设置正确。

(4)sdk_init.sh:这个是用来导入环境变量的,交叉编译才用得上,主要就是导入编译工具链,没多大用。

#!/bin/sh
export PATH=/home/naiine/work/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin:$PATH

编译过程

注: 这里编译之前要确保之前的boost和vsomeip的库删除干净,要不然有可能装不上。

现在的目录结构是:
在这里插入图片描述
忽略这个vsomeip_demo,这个是测试demo创建的。

1、执行build_boost.sh脚本,编译boost。
在这里插入图片描述
编译完成之后会有如下显示,此时目录结构如下所示:
在这里插入图片描述
2、执行build_someip.sh脚本,开始编译vsomeip,如果使用虚拟机的话,虚拟机的内存要设大一点,要不然会卡死,这个编译的时间有点长。
在这里插入图片描述
编译完成之后显示如下图所示,vsomeip编译的库都放在VSOMEIP/source/vsomeip-master/build中
在这里插入图片描述
至此vsomeip库就编译完成了,其实就是运行两个shell脚本就可以了,下一篇介绍一下vsomeip自带的helloworld用例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值