DCMTK库交叉编译移植到ARM流程

下载DCMTK源码:

源码下载链接:https://www.dcmtk.org/en/dcmtk/dcmtk-software-development/

我下载的是3.6.4版本,我当前最新是3.6.8

虚拟机安装cmake和cmake-gui工具

参考链接:https://blog.csdn.net/Toky_min/article/details/120041380

交叉编译DCMTK编译依赖的第三方库zlib等(这个好像不是依赖库)

参考源码dcmtk-3.6.4/ 路径下的INSTALL文档,需要的第三方库如下:

使用CMake-gui图形化工具生成Makefile文件

在终端输入cmake-gui打开 cmake-gui工具;

点击config,出现下面的界面:选Unix Makeflies和最后一个选项。

然后next跳转到编译器选择界面:

然后finish,自动构建并出现报错:

报错是因为cmake需要在目标主机上运行一个test程序,得出目标主机的基本算数类型,如float占几个字节等,
但是本地主机是X86的,没有目标主机arm的运行环境,无法得到目标主机的基本算数类型,INSTALL文档中说明如下:

解决方法:
还是参考源码dcmtk-3.6.4/ 路径下的INSTALL文档如下;
CROSS COMPILING WITH CMAKE 的最后面一段;

描述说必须要生成 “ arith.h ” 这个文件,并将它copy到build/(第一步中填写的生成makefile目录) config/include/dcmtk/config/arith.h 中。
“ arith.h ” 这个文件是通过编译 config/tests/arith.cc  生成一个ARM上的可执行文件XXX,最后将XXX文件copy到ARM主机上运行生成的。
所以我们需要在X86中通过交叉编译 config/tests/arith.cc  得到一个在PV300上的可执行文件XXX,然后将这XXX文件放到ARM主机PV300中运行,生成 “ arith.h ”,最后将它copy到 build/config/include/dcmtk/config/arith.h 中。
注意:交叉编译器要使用g++编译器:

编译没有意外的话又出现报错:

解决方法:
添加指定include路径
aarch64-linux-g++ config/tests/arith.cc -o arith -I ofstd/include/ -I config/dcmtk/config/include/
(指定的路径下面 需要有 dcmtk/config/  这个头文件中写死的路径)
 

最后回到cmake-gui界面,点击configure按钮,构建输出“Generating done” 再点击 Generate ,Makefile即可生成在开始第一步填的路径下。

编译安装

终端中进入第一步填写Makefile存放路径下,执行make然后make install 

关于make install的输出路径,可以在cmake-gui界面中指定,如下图所示:

将可执行文件放到ARM主机中运行

将交叉编译make install 指定生成目录下生成的bin目录和lib目录中的文件分别拷贝到ARM主机 /bin
和 /lib目录下。最后就可以在ARM板子上运行DCMTK库中的工具了。

QT中调用DCMTK库中的库问题

存在问题:
添加一个库后,发现编译出错
解决方法:
库之间存在依赖,将报错中找不到的库也添加进来即可。

注意:

1、关于拷贝: 目录下每个库都有软链接文件,而运行bin下链接的恰是lib中的软链接 ,所以在拷贝交叉编译生成的 lib目录下文件到主机时,要将软链接也拷贝过去。网上说拷贝软链接的方法是在 cp 命令中加参数 -d 。这在X86主机中拷贝没什么问题,但X86主机中拷贝到软链接到主机中挂载的U盘出现拷贝不了软链接问题。
解决办法:
直接在本地主机Windows中进行拷贝,通过网络文件映射将Ubuntu文件映射到Windows主机中。

2、在ARM主机运行DCMTK中工具时出现某些库找不到问题
解决办法:
在X86中使用find命令对库进行查找,将库拷贝到ARM的lib中即可。(缺少的库一般是DCMTK的第三方依赖库,因为前面我们交叉编译过了,所以在X86主机中都能找到)
注意:有些库是软链接或非ARM运行的库。需要使用file命令查看是不是ARM运行的库或软链接,找到真正的库。
报错中找不到gcc或g++库,拷贝交叉编译器中的过来即可。(板子原来的gcc和g++版本跟当前DCMTK的不一致导致)

  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值