前言(idlc文件的产生以及在交叉编译时的作用)
idlc
执行文件仅仅在C版本的CycloneDDS
在X86架构上编译时才会产生
如下图所示:
X86上编译C++版本cyclonedds源码或者进行交叉编译时是不产生idlc文件的
X86架构上编译C++版本cyclonedds源码时需要添加C版的安装路径,以引入C版本安装的库文件(CMAKE_PREFIX_PATH
)
交叉编译时此文件十分重要,因为交叉编译时idlc_generate
不可用,因此需要手动通过idlc文件
加上idl文件
生成源文件和头文件
1 idlc文件的作用总结
idlc
的作用与idlc_generate
指令时分不开的,idlc_generate
的作用可以参考下文
ARM架构Linux操作系统上C语言版本的CycloneDDS代码的CMake编译详细过程(交叉编译工具链)
那么idlc的作用时什么捏?
请看如下示例:
示例说明:
在ARM架构上编译C++版本CycloneDDS源码是出现如下图所示错误,因此需要利用idlc文件手动产生.cpp
和.hpp
文件
我们将X86架构上C版本中编译生成的idlc文件拷贝至ARM架构C++版本的build-arm/lib下面,通过idlc文件生成.cpp
和.hpp
文件。
通过下面命令生成ARM架构下C版本所需要的.c
和.h
文件的例子如下:
~/Documents/ARM_CPP_CycloneDDS/cyclonedds-cxx-master/build-arm/lib$:
./idlc ../../../../X86_C_CycloneDDS/cyclonedds-master/examples/roundtrip/RoundTrip.idl
如下图所示插产生.c
和.h
文件
那么生成ARM架构下C++版本所需要的.cpp
和.hpp
文件的例子命令如下:
~/Documents/ARM_CPP_CycloneDDS/cyclonedds-cxx-master/build-arm/lib$:
./idlc -l cxx../../../../X86_C_CycloneDDS/cyclonedds-master/examples/roundtrip/RoundTrip.idl
(多了 -l cxx)
但是显示缺少库
缺少X86中C生成的库:libcycloneddsidl.so.0
和X86中C++生成的库:libcycloneddsidlcxx.so
1.1 库文件的添加方法
1、使用export命令:
示例:export LD_LIBRARY_PATH=库文件的目录
比如在添加X86下C库时::export LD_LIBRARY_PATH=/home/ubuntu/Documents/X86_C_CycloneDDS/cyclonedds-master/build/lib
2、直接将所需库文件CP拷贝过来
如下图所示,将所需库全部拷贝过来
1.2 idlc文件.cpp/.hpp文件的生成
所需库文件已经全部加载过来,使用命令手动生成.cpp/.hpp
文件如下图所示
2、 idlc文件详细使用办法(持续更新)
1)用法:idlc [OPTIONS] FILE
idlc加上idl文件就可生成源文件和头文件
2) idlc -l
指定编译语言(默认是c语言)
如果要生成C++的话使用idlc -l cxx