简述
此章记录在编译和使用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用例。