dcmtk源码编译 (windows和 linux)

说一下我们的项目是Java的dicom影像,但是有些医院的胶片打印机用的国产化的,dcm4che的通信模块不能使用,需要用 dcmtk的

dcmpsprt.exe 和 dcmprscu.exe的命令行服务

下面跟着我一起开始编译

1.dcmtk源码来源--windows编译

windows编译不是很难,大家照着这个编就可以了

 看看这篇链接: DCMTK编译过程详解_灵客风的博客-CSDN博客

2.dcmtk源码 ----linux编译

 (1)先上传zip文件 (手动上传)

  (2) 进入目录

  cd(当前目录)  比如 cd /usr/local/code/   进入了code文件夹下了

  (3) 解压zip文件

   unzip dcmtk-DCMTK-3.6.5.zip

  此时解压之后文件夹路径应该是 /usr/local/code/dcmtk-DCMTK-3.6.5 

(4)进入dcmtk-DCMTK-3.6.5文件夹

 cd  dcmtk-DCMTK-3.6.5 (不确定当前层级的,可以用 ls 看看当前路径下的文件)

(5)先创建自己bulid文件夹,放后面生成的cmake 文件

mkdir build

(6)进入bulid

 cd bulid

(7)先创建cmake的文件 (我这边先创建了,然后再改具体的配置的)

cmake -DCMKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=true ../

参数说明:

(a)-DCMKE_BUILD_TYPE:编译方式,不填默认为Release方式

        以Debug方式编译 : -DCMKE_BUILD_TYPE=Debug

        以Release方式编译 :-DCMKE_BUILD_TYPE=Release

(b)-DBUILD_SHARED_LIBS:是否生成动态库文件(.so文件),不填默认为false(不生成动态库文件,但会生成静态库.a文件)

        生成动态库文件:-DBUILD_SHARED_LIBS=true

        不生成动态库文件:-DBUILD_SHARED_LIBS=false

(8)工程构建完成后,开始编译工程

make -j8

 这个是开8个并行线程的意思

(9) ccmake配置

   ccmake .. (输入这个命令行,会弹出查cmake的界面)

然后一行一行修改,注意输入[t]之后选项就更多一些,也是说的高级模式

(10)cmake配置好之后,记得configure 和generating一下

(11)生成 (最关键的一步了)

   make DESTDIR=../install-dcmtk install (我这里指定了把生成的东西放到 install-dcmtk文件夹里面)

  (12)生成好之后,../install-dcmtk 文件夹下面

 /install-dcmtk/usr/local/ 下面是生成的东西

 其中 bin下面的内容 是对应window下面的exe,因为linux的万物皆文件,所以不带后缀.exe

lib64 下面的内容 是对应windows下面的 dll,注意一下里面有软链接和动态链接

要复制那个.so.15.3.6.5的文件,不过记得下载到本地的时候,重命名.so.15 就行了.

(12)编完了之后,我要用 dcmprscu试一试

  可以进入文件夹路径下,然后输入  

dcmprscu -v -c dcmpstat.cfg --spool 命令

如果没有说指令sool不完整,那就成功了

dcmprscu: error while loading shared libraries: libjpeg.so.9: cannot open shared object file: No such file or directory ---报这个错,是缺依赖

 (13)下载libjpeg的源码, 自己去找这个源码,可以直接到我路径下找下载好的

 (14) 上面那些步骤再来一遍

 (15)编译成功之后,会在路径 /usr/local/lib下面出现这些.so

(16)一样的,把名字libjpeg.so.9.5.0重命名 libjpeg.so.9

 (17)再执行命名dcmprscu -v -c dcmpstat.cfg --spool  

dcmprscu: error while loading shared libraries: libjpeg.so.9: wrong ELF class: ELFCLASS32  -----多半是编译的版本不对,用指令 ldd libjpeg.so.9 看看,如果编译的不对,系统不对的情况,会出现"不是动态可执行文件"

 如果没有说指令sool不完整,那就成功了.

(18)如果权限不够,可以给文件夹设置一下权限

chmod 777 -R DCMTK_Print/

编译的linux 64位的dcmtk和 libjepg,放到我的共享资源里面了,有需要的可以试一试

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值