编译过程中主要参考来自这篇博客ARM架构Linux操作系统上C语言版本的CycloneDDS以及GPT
文章目录
前言
基于x86的编译同样可以参考上面提到的博主的相关文章,这里主要是记录自己在交叉编译arm的,和上面提到的博客发现有些细节上的问题(不同)
提示:以下是本篇文章正文内容,下面案例可供参考
一、IDL上的处理
交叉编译上,x86的cmakelists支持idlc_generate指令无法编译,所以将x86生成的HelloWoldData相关的源代码和头文件拷贝到要编译的arm_helloword项目工程里,之后在进行cmake和make操作
参考前面博主的方法,在X86的CycloneDDS代码包根目录下的eaxmple目录下的helloworld (前提当然是你以及编译过生成了HelloWorldData相关文件) 使用如下指令:
cp ./Hello* /path/to/cyclonedds-master/examples/arm_helloworld
ls 指令查看arm_helloworld目录,显示文件HelloWorldData.c和 HelloWorldData.h存在即可,注意要和publisher.c和subscriber.c同级
二、交叉编译cyclonedds(库)代码
1.准备好交叉编译工具
通常使用的arm交叉编译工具链,如arm-buildroot-linux-gnueabihf(刚好之前下的韦东山老师的,就先用这个)。
编译之前最好新建一个目录专门用于保存相关arm版本的cyclonedds(库)等文件,我在CycloneDDS代码包根目录下mkdir arm_cyclonedds。
2.配置.cmake文件
这个地方前面的博主似乎没交代清楚,可以问问GPT。
arm.cmake (自行取文件名)是一个工具链文件,用于在使用 CMake 进行交叉编译时指定目标平台(ARM)及其相关的编译器和路径。而 gcc-arm-linux-gnueabi 和 gcc-arm-linux-gnueabihf 是具体的交叉编译工具链存在于arm-buildroot-linux-gnueabihf目录的bin下,提供了编译器和库,用于生成 ARM 架构的可执行文件。
我使用的arm.cmake如下,使用者请自行修改自己的绝对路径:
# this one is important
SET(CMAKE_SYSTEM_NAME Linux)
# specify