下载 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
修改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
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
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
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
Refer to code Fast DDS Example, 同样修改CMakeLists.txt
添加交叉编译的参数
cd dds_helloworld/build
rm -rf *
cmake ..
make clean && make
Install the ARM cross compiler toolchain on your Linux Ubuntu PC 交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别