一、移植boost库
1. 下载boost库源码
Boost Version Historyhttps://www.boost.org/users/history/
本文使用boost_1_71_0.tar.gz版本。
2. 交叉编译boost库
2.1 解压boost库
junior@junior:~/boost$ tar -zxvf boost_1_71_0.tar.gz
2.2 boost库编译配置
junior@junior:~/boost/boost_1_71_0$ sudo ./bootstrap.sh --with-libraries=atomic,chrono,date_time,filesystem,log,system,thread --prefix=~/boost/boost_1_71_0/boostsdk
with-libraries:指定boost库中需要编译的lib (libboost_atomic.a libboost_chrono.a libboost_date_time.a libboost_filesystem.a libboost_log.a libboost_system.a libboost_thread.a)
prefix:指定安装boost库路径
修改编译工具链为交叉编译工具链:修改project-config.jam文件:
if ! gcc in [ feature.values <toolset> ]
{
using gcc : : /home/junior/gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc ;
}
2.3 编译boost库
junior@junior:~/boost/boost_1_71_0$ ./b2 -j8 cflags=-fPIC cxxflags=-fPIC
当使用boots库中的静态库时,需要加上cflags=-fPIC cxxflags=-fPIC
(编译选项中开启-fPIC选项,确保生成位置无关代码)
The Boost C++ Libraries were successfully built!
The following directory should be added to compiler include paths:
/home/junior/boost/boost_1_71_0
The following directory should be added to linker library paths:
/home/junior/boost/boost_1_71_0/stage/lib
2.4 安装boost库
junior@junior:~/boost/boost_1_71_0$ ./b2 install
...updating 9 targets...
common.copy /home/junior/boost/boost_1_71_0/boostsdk/lib/libboost_chrono.a
common.copy /home/junior/boost/boost_1_71_0/boostsdk/lib/libboost_date_time.a
common.copy /home/junior/boost/boost_1_71_0/boostsdk/lib/libboost_filesystem.a
common.copy /home/junior/boost/boost_1_71_0/boostsdk/lib/libboost_regex.a
common.copy /home/junior/boost/boost_1_71_0/boostsdk/lib/libboost_thread.a
common.copy /home/junior/boost/boost_1_71_0/boostsdk/lib/libboost_system.a
common.copy /home/junior/boost/boost_1_71_0/boostsdk/lib/libboost_log_setup.a
common.copy /home/junior/boost/boost_1_71_0/boostsdk/lib/libboost_atomic.a
common.copy /home/junior/boost/boost_1_71_0/boostsdk/lib/libboost_log.a
...updated 9 targets...
二、移植vsomeip
1.下载vsomeip源码
GitHub - COVESA/vsomeip: An implementation of Scalable service-Oriented MiddlewarE over IPAn implementation of Scalable service-Oriented MiddlewarE over IP - COVESA/vsomeiphttps://github.com/COVESA/vsomeip本文使用vsomeip 3.1.14.1版本。
2.编译
2.1 创建编译目录
junior@junior:~/vsomeip/$ mkdir build
junior@junior:~/vsomeip/$ cd build
2.3 在build目录下执行如下脚本(编译和安装):
junior@junior:~/vsomeip/build$ sh build.sh
build.sh脚本如下:
#!/bin/sh
#编译工具
COMPILER_CC=/home/junior/gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
COMPILER_CXX=/home/junior/gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
#编译选项
COMPILER_FLAGS="-lpthread"
#安装位置
COMPILER_PREFIX=$(pwd)/../someipsdk
#boost编译后的安装位置
BOOST_ROOT=/home/junior/boost/boost_1_71_0/boostsdk
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 \
-DBoost_USE_STATIC_LIBS=1 \
..
make -j24
make install
在~/vsomeip/someipsdk/lib目录下生成vsomeip库文件:
junior@junior:~/vsomeip/someipsdk/lib$ ls -l
total 70612
drwxr-xr-x 3 root root 4096 5月 21 15:45 cmake
lrwxrwxrwx 1 root root 20 5月 21 15:45 libvsomeip3-cfg.so -> libvsomeip3-cfg.so.3
lrwxrwxrwx 1 root root 25 5月 21 15:45 libvsomeip3-cfg.so.3 -> libvsomeip3-cfg.so.3.1.14
-rw-r--r-- 1 root root 7388424 5月 24 10:13 libvsomeip3-cfg.so.3.1.14
lrwxrwxrwx 1 root root 20 5月 21 15:45 libvsomeip3-e2e.so -> libvsomeip3-e2e.so.3
lrwxrwxrwx 1 root root 25 5月 21 15:45 libvsomeip3-e2e.so.3 -> libvsomeip3-e2e.so.3.1.14
-rw-r--r-- 1 root root 886304 5月 24 10:13 libvsomeip3-e2e.so.3.1.14
lrwxrwxrwx 1 root root 19 5月 21 15:45 libvsomeip3-sd.so -> libvsomeip3-sd.so.3
lrwxrwxrwx 1 root root 24 5月 21 15:45 libvsomeip3-sd.so.3 -> libvsomeip3-sd.so.3.1.14
-rw-r--r-- 1 root root 10635072 5月 24 10:13 libvsomeip3-sd.so.3.1.14
lrwxrwxrwx 1 root root 16 5月 21 15:45 libvsomeip3.so -> libvsomeip3.so.3
lrwxrwxrwx 1 root root 21 5月 21 15:45 libvsomeip3.so.3 -> libvsomeip3.so.3.1.14
-rw-r--r-- 1 root root 53379984 5月 24 10:13 libvsomeip3.so.3.1.14
drwxr-xr-x 2 root root 4096 5月 21 15:45 pkgconfig
三、在板子上运行
1.拷贝vsomeip库到开发板 /userdata/someip/someipsdk
2.拷贝boost库到开发板 /userdata/someip/boostsdk
3.将两个库的链接路径添加到环境变量 LD_LIBRARY_PATH中:
root@Dev_board:/userdata# export LD_LIBRARY_PATH=/userdata/someip/someipsdk/lib:$LD_LIBRARY_PATH
root@Dev_board:/userdata# export LD_LIBRARY_PATH=/userdata/someip/boostsdk/lib:$LD_LIBRARY_PATH
root@Dev_board:/userdata# echo $LD_LIBRARY_PATH
/userdata/someip/boostsdk/lib:/userdata/someip/someipsdk/lib:/userdata/someip/boostsdk/lib:/userdata/someip/someipsdk/lib: