介绍如何在Linux环境交叉编译eProsima Fast DDS。以下包将被安装:foonathan_memory_vendor,一个与STL兼容的c++内存分配器库。fastcdr,一个c++库,根据标准CDR序列化机制进行序列化。fasttps, eProsima快速DDS库的核心库。
创建工作空间:
mkdir ~/Fast-DDS-python
1. FAST-DDS依赖库foonathan_memory_vendor交叉编译
cd ~/Fast-DDS-python
git clone https://github.com/eProsima/foonathan_memory_vendor.git
mkdir foonathan_memory_vendor/build
cd foonathan_memory_vendor
修改CMake,添加交叉编译工具链
gedit CMakeLists.txt
改动1:
改动2:
cd build/
mkdir build_arm64
cmake -DCMAKE_C_COMPILER=/home/forlinx/Templates/project/public/Tool/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc -DCMAKE_CXX_COMPILER=/home/forlinx/Templates/project/public/Tool/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ -DBUILD_SHARED_LIBS=ON ..
#设置自己的安装路径
make
生成的库安装到build/foo_mem_ext_prj_install目录下。
2. FAST-DDS依赖库FAST-CDR交叉编译
git clone https://github.com/eProsima/Fast-CDR.git
cd Fast-CDR
修改CMakeLists.txt:在project前添加交叉编译工具的配置
cmake .. -DCMAKE_INSTALL_PREFIX=~/Templates/project/public/3rd_party/Fast-DDS-python/Fast-CDR/build/build_arm64
make & make install
3. FAST-DDS依赖库ASIO交叉编译
asio库下载链接添加链接描述
asio库不生成库文件,所以直接编译就可以:
./configure --prefix=/usr/local
make
4. FAST-DDS依赖库tinyxml2交叉编译
git clone https://github.com/leethomason/tinyxml2.git
cd tinyxml2
gedit CMakeLists.txt
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/home/forlinx/Templates/project/public/3rd_party/Fast-DDS-python/tinyxml2/build/build_arm64 -DBUILD_SHARED_LIBS=ON
4. FAST-DDS交叉编译
git clone https://github.com/eProsima/Fast-DDS.git
cd Fast-DDS
mkdir build
gedit CMakeLists.txt
添加find路径,修改交叉编译器
cd build
cmake ../ -DCMAKE_INSTALL_PREFIX=~/Templates/project/public/3rd_party/Fast-DDS-python/Fast-DDS/build/build_arm64
make & make install
至此,fastdds交叉编译完成。