• CommonAPI SomeIP Runtime 交叉编译


    记录一下CommonAPI SomeIP Runtime在PC上编译及交叉编译情况。


    一、下载

    这里使用的是3.2.0版本。
    https://github.com/COVESA/capicxx-someip-runtime
    下载:
    git clone https://github.com/COVESA/capicxx-someip-runtime.git

    二、Ubuntu编译

    1、安装依赖包

    由于编译依赖于 vsomeip的库,所以再此之前要先编译vsomeip。
    参考:https://blog.csdn.net/lang523493505/article/details/126413912

    2、编译及安装

    这里打算将编译出来的库放在上级目录下的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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    在脚本里面制定了编译安装的指定目录,所使用的gcc、g++

    执行。

    3、编译结果

    会生成头文件和动态、静态库。
    在这里插入图片描述
    在这里插入图片描述

    三、交叉编译

    1、安装依赖包

    交叉编译主要的点在于要配置交叉编译工具(gcc)以及指定编译平台的依赖库(sysroot)。
    还有指定已经交叉编译好的vsmoeip的库。

    2、编译及安装

    这里打算将编译出来的库放在上级目录下的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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    3、编译结果

    会生成头文件和动态、静态库。
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    把JS中的map方法玩出花来
    创建对象内存分析
    Linux - Python安装
    数组越界访问导致死循环的情况
    TensorFlow入门(一、环境搭建)
    MyBatis总结
    系统设计.秒杀系统
    移动适配:vw/vh
    23.Ubuntu磁盘挂载常用命令
    Redis设计与实现(七)| 发布 & 订阅
  • 原文地址:https://blog.csdn.net/lang523493505/article/details/126439685