记录一下vsomeip在PC上编译及交叉编译情况。
这里使用的是3.1.20.3版本。
https://github.com/COVESA/vsomeip
下载:
git clone https://github.com/COVESA/vsomeip.git
sudo apt-get install asciidoc source-highlight doxygen graphviz
如果有需要生成说明文档的话才需要安装。
sudo apt-get install libgtest-dev
cd /usr/src/gtest
sudo mkdir build
cd build
sudo cmake ..
sudo make
sudo cp lib/libgtest*.a /usr/local/lib
安装gtest,如果不编译test就不需要安装。
需要依赖boost >= 1.55,实际上这个版本的vsomeip只能匹配1.74版本的,编译boost参考:
https://blog.csdn.net/lang523493505/article/details/126240805
我这里使用的是cmake-3.24.0版本,版本太低了可能会有异常。
gcc的版本要大于4.8。
这里打算将编译出来的库放在上级目录下的target_pc目录。
在克隆下来的工程根目录创建文件夹build_dir,并且在里面创建编译脚本。
build.sh:
#!/bin/sh
#编译工具
COMPILER_CC=gcc
COMPILER_CXX=g++
#编译选项
COMPILER_FLAGS="-lpthread"
#安装位置
COMPILER_PREFIX=$(pwd)/../../target_pc
#boost编译后的安装位置
BOOST_ROOT=$(pwd)/../../target_pc
cmake -DCMAKE_INSTALL_PREFIX=$COMPILER_PREFIX \
-DCMAKE_C_COMPILER=$COMPILER_CC \
-DCMAKE_CXX_COMPILER=$COMPILER_CXX \
-DCMAKE_C_FLAGS="$COMPILER_FLAGS" \
-DCMAKE_CXX_FLAGS="$COMPILER_FLAGS" \
-DBOOST_ROOT=$BOOST_ROOT \
-DBoost_INCLUDE_DIR=$BOOST_ROOT/include/boost \
-DBoost_LIBRARY_DIR=$BOOST_ROOT/lib \
-DENABLE_SIGNAL_HANDLING=1 \
-DIAGNOSIS_ADDRESS=0x10 \
-DENABLE_SESSION_HANDLING_CONFIG=1 \
..
make
make install
在脚本里面制定了编译安装的指定目录,所使用的gcc、g++,编译选项,boost库的目录。
-DENABLE_SIGNAL_HANDLING=1 是为了能够随时终止应用并能够将共享内存段 /dev/shm/vsomeip 进行正确删除。
执行。
会生成默认配置文件、头文件、动态库、静态库。



交叉编译主要的点在于要配置交叉编译工具(gcc)以及指定编译平台的依赖库(sysroot)。
还有很重要的是要提前交叉编译好Boost库。
参考:https://blog.csdn.net/lang523493505/article/details/126240805
这里打算将编译出来的库放在上级目录下的target_cross目录。
在克隆下来的工程根目录创建文件夹build_dir,并且在里面创建编译脚本。
build.sh:
#!/bin/sh
#编译工具路径
QL_CROSSTOOLS=/opt/ql_crosstools/ql-ag550qcn-le20-gcc820-v1-toolchain/gcc/usr/bin/arm-oe-linux-gnueabi
#SYSROOT路径
QL_SYSROOT=/home/hrx/work/ql-sysroots
COMPILER_SYSROOT="--sysroot=$QL_SYSROOT"
#编译工具
COMPILER_CC=$QL_CROSSTOOLS/arm-oe-linux-gnueabi-gcc
COMPILER_CXX=$QL_CROSSTOOLS/arm-oe-linux-gnueabi-g++
#编译选项
COMPILER_FLAGS="-lpthread -march=armv7-a -marm -mfpu=neon -mfloat-abi=hard"
#安装位置
COMPILER_PREFIX=$(pwd)/../../target_cross
#boost编译后的安装位置
BOOST_ROOT=$(pwd)/../../target_cross
cmake -DCMAKE_SYSTEM_NAME=Linux \
-DCMAKE_INSTALL_PREFIX=$COMPILER_PREFIX \
-DCMAKE_C_COMPILER=$COMPILER_CC \
-DCMAKE_CXX_COMPILER=$COMPILER_CXX \
-DCMAKE_C_FLAGS="$COMPILER_FLAGS $COMPILER_SYSROOT" \
-DCMAKE_CXX_FLAGS="$COMPILER_FLAGS $COMPILER_SYSROOT" \
-DCMAKE_FIND_ROOT_PATH=$QL_SYSROOT \
-DBOOST_ROOT=$BOOST_ROOT \
-DBoost_INCLUDE_DIR=$BOOST_ROOT/include/boost \
-DBoost_LIBRARY_DIR=$BOOST_ROOT/lib \
-DENABLE_SIGNAL_HANDLING=1 \
-DIAGNOSIS_ADDRESS=0x10 \
-DENABLE_SESSION_HANDLING_CONFIG=1 \
..
make
make install
会生成默认配置文件、头文件、动态库、静态库。


