VSOMEIP在Linux系统下的编译

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VSOMEIP在Linux系统下的编译

简述

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

资源下载

VSOMEIP的源代码链接在下面,里面包含了vsomeip源码、boost源码以及自动编译的自动化脚本(shell脚本)。
https://download.youkuaiyun.com/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用例。

VSomeIP是一个轻量级的网络通信库,适用于实时系统和嵌入式环境。对于QNX 7.1的交叉编译,这是一个相对复杂的任务,因为需要设置适当的工具链、目标架构以及安装必要的依赖。以下是基本的步骤流程: 1. **获取源码**: 首先,你需要从VSomeIP官方GitHub仓库下载适合QNX 7.1的源代码。通常可以在`releases`页面找到预编好的适用于特定平台的版本。 2. **配置工具链**: 确保你已经安装了支持QNX的GCC或者其他交叉编译器,如`arm-linux-gnueabi-gcc`。如果你还没有,可以从QNX SDK中获取或者通过相应的包管理器安装。 3. **设置环境变量**: 设置环境变量,指向所需的QNX头文件路径和交叉编译工具链目录。例如,如果`arm-linux-gnueabi-gcc`位于`/path/to/qnx/bin`: ``` export PATH=/path/to/qnx/bin:$PATH export CXX=arm-linux-gnueabi-g++ ``` 4. **准备构建系统**: 使用QNX的makefile体系结构,比如使用`GNU Make`。确保项目根目录下的Makefile针对QNX进行了修改,可能需要指定目标架构(如`armle-v7`)和链接器选项。 5. **构建库**: 运行`make`命令开始编译过程。它可能会生成一些中间文件,如`.o`(对象文件)和`.a`(静态库)。确保有足够的空间,并允许makefile完成全部构建。 6. **生成可执行文件示例**: 如果你想测试库的功能,可以尝试构建包含VSomeIP的简单示例程序。同样使用QNX的工具链,指定刚刚编译的库作为依赖。 7. **验证**: 测试生成的可执行文件,确保它能在QNX环境中运行并正常工作。 8. **安装**: 可选地,你可以将编译后的库复制到QNX系统的适当位置,以便其他项目能够找到它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值