Skip to content

Latest commit

 

History

History
117 lines (83 loc) · 4.18 KB

Fast_DDS_CrossCompile_ARM.md

File metadata and controls

117 lines (83 loc) · 4.18 KB

Fast DDS Cross Compile for ARM

安装交叉编译工具

这里下载arm-v7a-linux-gnueabihf

Fast-DDS 依赖

Asio

下载 Asio 1.16.1

由于asio c++ libary, 只有头文件,所以不需要编译,只需要拷贝header到交叉编译环境下的include文件夹就可以

cp -R ~/asio-1.16.1/include/asio /opt/OSELAS.Toolchain-2016.06.0/arm-v7a-linux-gnueabihf/gcc-5.4.0-glibc-2.23-binutils-2.26-kernel-4.6-sanitized/sysroot-arm-v7a-linux-gnueabihf/usr/local/include/
cp ~/asio-1.16.1/include/asio.hpp /opt/OSELAS.Toolchain-2016.06.0/arm-v7a-linux-gnueabihf/gcc-5.4.0-glibc-2.23-binutils-2.26-kernel-4.6-sanitized/sysroot-arm-v7a-linux-gnueabihf/usr/local/include/

TinyXML2

下载 TinyXML2

修改CMakeLists.txt, 添加如下设置

message("=== set sysroot ===")

set(CMAKE_SYSROOT "/opt/OSELAS.Toolchain-2016.06.0/arm-v7a-linux-gnueabihf/gcc-5.4.0-glibc-2.23-binutils-2.26-kernel-4.6-sanitized/sysroot-arm-v7a-linux-gnueabihf")
set(CMAKE_INSTALL_PREFIX "${CMAKE_SYSROOT}")

set(CMAKE_C_COMPILER /opt/OSELAS.Toolchain-2016.06.0/arm-v7a-linux-gnueabihf/gcc-5.4.0-glibc-2.23-binutils-2.26-kernel-4.6-sanitized/bin/arm-v7a-linux-gnueabihf-gcc)
set(CMAKECXXCOMPILER /opt/OSELAS.Toolchain-2016.06.0/arm-v7a-linux-gnueabihf/gcc-5.4.0-glibc-2.23-binutils-2.26-kernel-4.6-sanitized/bin/arm-v7a-linux-gnueabihf-g++)
set(CMAKE_LINKER /opt/OSELAS.Toolchain-2016.06.0/arm-v7a-linux-gnueabihf/gcc-5.4.0-glibc-2.23-binutils-2.26-kernel-4.6-sanitized/bin/arm-v7a-linux-gnueabihf-ld)


set(CMAKE_FIND_ROOT_PATH /opt/OSELAS.Toolchain-2016.06.0/arm-v7a-linux-gnueabihf/gcc-5.4.0-glibc-2.23-binutils-2.26-kernel-4.6-sanitized/sysroot-arm-v7a-linux-gnueabihf)
include_directories("${CMAKE_FIND_ROOT_PATH}/usr/include/")
include_directories("${CMAKE_FIND_ROOT_PATH}/usr/local/include/")
include_directories("${CMAKE_FIND_ROOT_PATH}/include/")
message("--- add include ---")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

编译安装到交叉编译环境下:

cmake ..  -DCMAKE_INSTALL_PREFIX=/opt/OSELAS.Toolchain-2016.06.0/arm-v7a-linux-gnueabihf/gcc-5.4.0-glibc-2.23-binutils-2.26-kernel-4.6-sanitized/sysroot-arm-v7a-linux-gnueabihf

sudo cmake --build . --target install

Foonathan memory

git clone https://github.com/eProsima/foonathan_memory_vendor.git
cd foonathan_memory_vendor

修改CMakeLists.txt, 添加和TinyXML2中的类似设置

mkdir foonathan_memory_vendor/build
cd foonathan_memory_vendor/build
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/OSELAS.Toolchain-2016.06.0/arm-v7a-linux-gnueabihf/gcc-5.4.0-glibc-2.23-binutils-2.26-kernel-4.6-sanitized/sysroot-arm-v7a-linux-gnueabihf -DBUILD_SHARED_LIBS=ON
sudo cmake --build . --target install

Fast CDR

git clone https://github.com/eProsima/Fast-CDR.git
cd Fast-CDR

修改CMakeLists.txt, 添加和TinyXML2中的类似设置

mkdir Fast-CDR/build
cd Fast-CDR/build
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/OSELAS.Toolchain-2016.06.0/arm-v7a-linux-gnueabihf/gcc-5.4.0-glibc-2.23-binutils-2.26-kernel-4.6-sanitized/sysroot-arm-v7a-linux-gnueabihf
sudo cmake --build . --target install

Fast-DDS

git clone https://github.com/eProsima/Fast-DDS.git
cd Fast-DDS

修改CMakeLists.txt, 添加和TinyXML2中的类似设置

mkdir Fast-DDS/build
cd Fast-DDS/build
cmake ..  -DCMAKE_INSTALL_PREFIX=~/Fast-DDS/install -DCMAKE_PREFIX_PATH=~/Fast-DDS/install
sudo cmake --build . --target install

Compile Fast DDS Example

Refer to code Fast DDS Example, 同样修改CMakeLists.txt 添加交叉编译的参数

cd dds_helloworld/build
rm -rf *
cmake ..
make clean && make

Reference

Install the ARM cross compiler toolchain on your Linux Ubuntu PC 交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别