记录一下CommonAPI SomeIP Runtime在PC上编译及交叉编译情况。
这里使用的是3.2.0版本。
https://github.com/COVESA/capicxx-someip-runtime
下载:
git clone https://github.com/COVESA/capicxx-someip-runtime.git
由于编译依赖于 vsomeip的库,所以再此之前要先编译vsomeip。
参考:https://blog.csdn.net/lang523493505/article/details/126413912
这里打算将编译出来的库放在上级目录下的target_pc目录。
在克隆下来的工程根目录创建文件夹build_dir,并且在里面创建编译脚本。
build.sh:
#!/bin/sh
#编译工具
COMPILER_CC=gcc
COMPILER_CXX=g++
#安装位置
COMPILER_PREFIX=$(pwd)/../../target_pc
#boost、commonapi-core、vsomeip3依赖库位置
COMPILER_LIB=$(pwd)/../../target_pc
cmake -DCMAKE_INSTALL_PREFIX=$COMPILER_PREFIX \
-DCMAKE_C_COMPILER=$COMPILER_CC \
-DCMAKE_CXX_COMPILER=$COMPILER_CXX \
-DCMAKE_PREFIX_PATH="$COMPILER_LIB" \
-DUSE_INSTALLED_COMMONAPI=ON \
..
make
make install
在脚本里面制定了编译安装的指定目录,所使用的gcc、g++
执行。
会生成头文件和动态、静态库。
交叉编译主要的点在于要配置交叉编译工具(gcc)以及指定编译平台的依赖库(sysroot)。
还有指定已经交叉编译好的vsmoeip的库。
这里打算将编译出来的库放在上级目录下的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="-march=armv7-a -marm -mfpu=neon -mfloat-abi=hard"
#安装位置
COMPILER_PREFIX=$(pwd)/../../target_cross
#boost、commonapi-core、vsomeip3依赖库位置
COMPILER_LIB=$(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 \
-DCMAKE_PREFIX_PATH="$COMPILER_LIB" \
-DUSE_INSTALLED_COMMONAPI=ON \
..
make
make install
会生成头文件和动态、静态库。