FastDDS 交叉编译
2026/5/3 21:48:34 网站建设 项目流程

版本依赖

依赖版本仓库
memoryv0.7-3https://github.com/foonathan/memory.git
Fast-CDRv1.1.1https://github.com/eProsima/Fast-CDR.git
FastDDSv2.4.16https://github.com/eProsima/Fast-DDS.git

编辑toolchain.cmake

set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR aarch64) set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc) set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++) # 避免 try_run 执行失败 set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) # 可选:指定 sysroot(如果你有目标 rootfs) # set(CMAKE_SYSROOT /opt/aarch64-sysroot) 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(THREADS_PREFER_PTHREAD_FLAG ON) set(CMAKE_THREAD_LIBS_INIT "-lpthread") set(CMAKE_HAVE_THREADS_LIBRARY 1) set(CMAKE_USE_PTHREADS_INIT 1)

交叉编译

交叉编译memory

$ cmake..-DCMAKE_TOOLCHAIN_FILE=../../toolchain-aarch64.cmake-DCMAKE_INSTALL_PREFIX=../../install-DFOONATHAN_MEMORY_BUILD_EXAMPLES=OFF-DFOONATHAN_MEMORY_BUILD_TESTS=OFF $make-j4$makeinstall

交叉编译Fast-CDR

$ cmake..-DCMAKE_TOOLCHAIN_FILE=../../toolchain-aarch64.cmake-DCMAKE_INSTALL_PREFIX=../../install-DCMAKE_PREFIX_PATH=../../install-DBUILD_TESTING=OFF $make-j4$makeinstall

交叉编译Fast-DDS

$ cmake..-DCMAKE_TOOLCHAIN_FILE=../../toolchain-aarch64.cmake-DCMAKE_INSTALL_PREFIX=../../install-DCMAKE_PREFIX_PATH=../../install-DTHIRDPARTY=ON-DBUILD_SHARED_LIBS=ON-DBUILD_TESTING=OFF-DFASTDDS_STATISTICS=OFF-DCOMPILE_EXAMPLES=ON-DSHM_TRANSPORT_DEFAULT=ON-DSECURITY=OFF $make-j4$makeinstall

x86_64

编译memory

$ cmake..-DCMAKE_INSTALL_PREFIX=../../install-DFOONATHAN_MEMORY_BUILD_EXAMPLES=OFF-DFOONATHAN_MEMORY_BUILD_TESTS=OFF $make-j4$makeinstall

编译Fast-CDR

$ cmake..-DCMAKE_INSTALL_PREFIX=../../install-DCMAKE_PREFIX_PATH=../../install-DBUILD_TESTING=OFF $make-j4$makeinstall

编译Fast-DDS

$ cmake..-DCMAKE_INSTALL_PREFIX=../../install-DCMAKE_PREFIX_PATH=../../install-DTHIRDPARTY=ON-DBUILD_SHARED_LIBS=ON-DBUILD_TESTING=OFF-DFASTDDS_STATISTICS=OFF-DCOMPILE_EXAMPLES=ON-DSHM_TRANSPORT_DEFAULT=ON-DSECURITY=OFF $make-j4$makeinstall

测试

subscriber

$~/workspace/install/examples/cpp/dds/HelloWorldExample/bin$ ./DDSHelloWorldExample subscriber Starting Subscriber running. Please press enter to stop the Subscriber Subscriber matched. Message HelloWorld1RECEIVED Message HelloWorld2RECEIVED Message HelloWorld3RECEIVED Message HelloWorld4RECEIVED Message HelloWorld5RECEIVED Message HelloWorld6RECEIVED Message HelloWorld7RECEIVED Message HelloWorld8RECEIVED Message HelloWorld9RECEIVED Message HelloWorld10RECEIVED Subscriber unmatched.

publisher

$ ~/workspace/install/examples/cpp/dds/HelloWorldExample/bin$ ./DDSHelloWorldExample publisher Starting Publisher running10samples. Publisher matched. Message: HelloWorld with index:1SENT Message: HelloWorld with index:2SENT Message: HelloWorld with index:3SENT Message: HelloWorld with index:4SENT Message: HelloWorld with index:5SENT Message: HelloWorld with index:6SENT Message: HelloWorld with index:7SENT Message: HelloWorld with index:8SENT Message: HelloWorld with index:9SENT Message: HelloWorld with index:10SENT

HelloWorldExampleSharedMem

publisher 和 subscriber 的对象关系图

时序图

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询