linux环境下打包c++的Qt应用程序装载vtk和itk

news2024/11/17 13:58:36

文章目录

  • 一、QT安装
      • 安装前准备
      • 1.1 方法一 源码编译安装(实践缺少xcb依赖):
      • 1.2 方法二 run文件安装:
  • 二、迁移windows下qt应用到linux
  • 三、VTK安装
      • 3.1 安装ccmake 和 VTK 的依赖项
      • 3.2 linux下VTK库下载安装
  • 四、QT应用基础上引入VTK依赖
  • 五、ITK安装
  • 六、QT应用基础上引入VTK依赖后继续引入ITK依赖
      • 6.1 编辑.pro文件(二或四基础上)
      • 6.2 编译运行
  • 七、利用docker打包成镜像
  • 八、MobaXterm连接显示Linux图形化界面(解决不支持图形化界面的问题)
    • 参考其它:

一、QT安装

安装前准备

sudo apt-get update
sudo apt install cmake
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install libx11-dev libxext-dev libxtst-dev

1.1 方法一 源码编译安装(实践缺少xcb依赖):

qt下载路径
在这里插入图片描述

`1、解压安装`
解压 tar -xvf xxx.tar.xz
到当前解压的目录cd qt-everywhere-opensource-src-%VERSION%/qtbase
sudo ./configure
sudo cmake --build . --parallel
sudo cmake --install .

参考

1.2 方法二 run文件安装:

5.12.4.run版本下载
下载完成上传置linux环境直接sudo ./xxx.run进行安装

二、迁移windows下qt应用到linux

1、源码调整

  工程里面的目录Debug、GeneratedFiles、Release、Win32、x64和
  文件...user、...sln、...vcxproj、......filters删掉,
  只要保留.h、.cpp、.qrc(没有这个文件编译出来的Qt项目会显示不了图片)、.ui文件
  和Resources目录就可以了

2、生成.pro文件(qmake路径跟俊自己安装的qt路径)

sudo /opt/Qt5.14.1/5.14.1/gcc_64/bin/qmake -project QT+=widgets

项目中如果用到qml或websocket可以根据情况添加依赖如下:
在这里插入图片描述
3、生成Makefile文件

sudo /opt/Qt5.14.1/5.14.1/gcc_64/bin/qmake

4、生成shell文件

sudo make

4、执行shell文件
sudo ./xxx.sh

补充重新编译:
make clean

参考文章

三、VTK安装

3.1 安装ccmake 和 VTK 的依赖项

sudo apt-get install cmake-curses-gui
sudo apt-get install freeglut3-dev

3.2 linux下VTK库下载安装

vtk下载地址

选择合适的版本进行下载,解压到VTK文件夹下,在与下载的vtk版本目录同一级下新建文件下名为build。
在build目录下执行命令:
sudo cmake-gui
弹出图形化界面进行安装。
`步骤:选择vtk原路径->选择build安装路径->点击Advanced->点击Configure。`
`编辑修改选项:`
1、BUILD_SHARED_LIBS = ON  # 动态库编译,建议打开
2、BUILD_TESTING = OFF     # 默认OFF,如果打开的话,编译时会由于下载测试数据所用url过旧而报错,建议OFF
3、CMAKE_BUILD_TYPE = Release           # 默认Debug运行会较慢
4、CMAKE_INSTALL_PREFIX = /usr/local    # 这里用默认就行,或者改到想要安装的位置
5、VTK_FORBID_DOWNLOADS = ON    # 默认OFF,建议打开,否则编译会报错,理由同BUILD_TESTING
注意:BUILD_TESTING的报错问题。build_example这里要是进行vtk学习的话最好勾选上,会有自带的例子可供学习。

完成后再点击Generate。完成后退出图形化界面。
在终端build路径下输入:sudo make -j8
执行完成后输入:sudo make install

配置vtkRendering环境变量参考错误

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

至次VTK安装完成

参考安装

四、QT应用基础上引入VTK依赖

编辑迁移目录下的.pro文件末尾添加如下

INCLUDEPATH += $$PWD/../../include/vtk-8.2
DEPENDPATH += $$PWD/../../include/vtk-8.2

LIBS += -L$$PWD/../../lib/ \
-lvtkChartsCore-8.2 \
-lvtkCommonColor-8.2 \
-lvtkCommonComputationalGeometry-8.2 \
-lvtkCommonCore-8.2 \
-lvtkCommonDataModel-8.2 \
-lvtkCommonExecutionModel-8.2 \
-lvtkCommonMath-8.2 \
-lvtkCommonMisc-8.2 \
-lvtkCommonSystem-8.2 \
-lvtkCommonTransforms-8.2 \
-lvtkDICOM-8.2 \
-lvtkDICOMParser-8.2 \
-lvtkDomainsChemistry-8.2 \
-lvtkdoubleconversion-8.2 \
-lvtkexodusII-8.2 \
-lvtkexpat-8.2 \
-lvtkFiltersAMR-8.2 \
-lvtkFiltersCore-8.2 \
-lvtkFiltersExtraction-8.2 \
-lvtkFiltersFlowPaths-8.2 \
-lvtkFiltersGeneral-8.2 \
-lvtkFiltersGeneric-8.2 \
-lvtkFiltersGeometry-8.2 \
-lvtkFiltersHybrid-8.2 \
-lvtkFiltersHyperTree-8.2 \
-lvtkFiltersImaging-8.2 \
-lvtkFiltersModeling-8.2 \
-lvtkFiltersParallel-8.2 \
-lvtkFiltersParallelImaging-8.2 \
-lvtkFiltersPoints-8.2 \
-lvtkFiltersProgrammable-8.2 \
-lvtkFiltersSelection-8.2 \
-lvtkFiltersSMP-8.2 \
-lvtkFiltersSources-8.2 \
-lvtkFiltersStatistics-8.2 \
-lvtkFiltersTexture-8.2 \
-lvtkFiltersTopology-8.2 \
-lvtkFiltersVerdict-8.2 \
-lvtkfreetype-8.2 \
-lvtkGeovisCore-8.2 \
-lvtkgl2ps-8.2 \
-lvtkglew-8.2 \
-lvtkGUISupportQt-8.2 \
-lvtkGUISupportQtSQL-8.2 \
-lvtkhdf5-8.2 \
-lvtkhdf5_hl-8.2 \
-lvtkImagingColor-8.2 \
-lvtkImagingCore-8.2 \
-lvtkImagingFourier-8.2 \
-lvtkImagingGeneral-8.2 \
-lvtkImagingHybrid-8.2 \
-lvtkImagingMath-8.2 \
-lvtkImagingMorphological-8.2 \
-lvtkImagingSources-8.2 \
-lvtkImagingStatistics-8.2 \
-lvtkImagingStencil-8.2 \
-lvtkInfovisCore-8.2 \
-lvtkInfovisLayout-8.2 \
-lvtkInteractionImage-8.2 \
-lvtkInteractionStyle-8.2 \
-lvtkInteractionWidgets-8.2 \
-lvtkIOAMR-8.2 \
-lvtkIOAsynchronous-8.2 \
-lvtkIOCityGML-8.2 \
-lvtkIOCore-8.2 \
-lvtkIOEnSight-8.2 \
-lvtkIOExodus-8.2 \
-lvtkIOExport-8.2 \
-lvtkIOExportGL2PS-8.2 \
-lvtkIOExportPDF-8.2 \
-lvtkIOGeometry-8.2 \
-lvtkIOImage-8.2 \
-lvtkIOImport-8.2 \
-lvtkIOInfovis-8.2 \
-lvtkIOLegacy-8.2 \
-lvtkIOLSDyna-8.2 \
-lvtkIOMINC-8.2 \
-lvtkIOMotionFX-8.2 \
-lvtkIOMovie-8.2 \
-lvtkIONetCDF-8.2 \
-lvtkIOOggTheora-8.2 \
-lvtkIOParallel-8.2 \
-lvtkIOParallelXML-8.2 \
-lvtkIOPLY-8.2 \
-lvtkIOSegY-8.2 \
-lvtkIOSQL-8.2 \
-lvtkIOTecplotTable-8.2 \
-lvtkIOVeraOut-8.2 \
-lvtkIOVideo-8.2 \
-lvtkIOXML-8.2 \
-lvtkIOXMLParser-8.2 \
-lvtkjpeg-8.2 \
-lvtkjsoncpp-8.2 \
-lvtklibharu-8.2 \
-lvtklibproj-8.2 \
-lvtklibxml2-8.2 \
-lvtkloguru-8.2 \
-lvtklz4-8.2 \
-lvtklzma-8.2 \
-lvtkmetaio-8.2 \
-lvtknetcdf-8.2 \
-lvtkogg-8.2 \
-lvtkParallelCore-8.2 \
-lvtkParallelDIY-8.2 \
-lvtkpng-8.2 \
-lvtkpugixml-8.2 \
-lvtkRenderingAnnotation-8.2 \
-lvtkRenderingContext2D-8.2 \
-lvtkRenderingCore-8.2 \
-lvtkRenderingFreeType-8.2 \
-lvtkRenderingGL2PSOpenGL2-8.2 \
-lvtkRenderingImage-8.2 \
-lvtkRenderingLabel-8.2 \
-lvtkRenderingLOD-8.2 \
-lvtkRenderingOpenGL2-8.2 \
-lvtkRenderingQt-8.2 \
-lvtkRenderingSceneGraph-8.2 \
-lvtkRenderingUI-8.2 \
-lvtkRenderingVolume-8.2 \
-lvtkRenderingVolumeOpenGL2-8.2 \
-lvtkRenderingVtkJS-8.2 \
-lvtksqlite-8.2 \
-lvtksys-8.2 \
-lvtkTestingRendering-8.2 \
-lvtktheora-8.2 \
-lvtktiff-8.2 \
-lvtkverdict-8.2 \
-lvtkViewsContext2D-8.2 \
-lvtkViewsCore-8.2 \
-lvtkViewsInfovis-8.2 \
-lvtkViewsQt-8.2 \
-lvtkWrappingTools-8.2 \
-lvtkzlib-8.2 \

参考文章

五、ITK安装

下载版本
下载太慢可搭载vpn提高下载速度

'1、下载完成后在解压目录下:'
	cd /usr/local/itk/InsightToolkit-5.2.1
	sudo mkdir bin
	cd bin
'2、接下来进行编译:'
	ccmake ..
按c选择默认配置,配置完成后按g生成makelist。
'3、完成后运行make文件进行编译:'
	make -j4
'4、编译完成后进行安装:'
	sudo make install
 至此完成了ITK的编译安装工作

参考安装

六、QT应用基础上引入VTK依赖后继续引入ITK依赖

6.1 编辑.pro文件(二或四基础上)

'1、添加后保存退出'
	INCLUDEPATH += $$PWD/../../../include/ITK-5.2
	DEPENDPATH += $$PWD/../../../include/ITK-5.2
	INCLUDEPATH += $$PWD/../../../itk/InsightToolkit-5.2.1/Modules/Bridge/VtkGlue/include
	DEPENDPATH += $$PWD/../../../itk/InsightToolkit-5.2.1/Modules/Bridge/VtkGlue/include
  `补充:具体路径根据缺少的包决定。
   寻找包或头文件可以通过 sudo find / -name *xx* 去查找 后再引入`
   libs依赖引入如下:
   LIBS += -L$$PWD/../../../lib/ \
   -litksys-5.2 \

6.2 编译运行

1、生成Makefile文件
	sudo /opt/Qt5.14.1/5.14.1/gcc_64/bin/qmake
2、生成shell
	sudo make 
3、执行
	sudo ./xx.sh

七、利用docker打包成镜像

将上述应用打包成镜像(待完成)

八、MobaXterm连接显示Linux图形化界面(解决不支持图形化界面的问题)

window下MobaXterm下载
使用参考1
使用参考2

参考其它:

https://buff.163.com/market/csgo#tab=selling&page_num=1
https://www.jianshu.com/p/acf2fabd94f7
https://blog.csdn.net/shitsnail/article/details/78841919

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/375771.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sikuli+eclipse对于安卓app自动化测试的应用

Sikuli是什么? 下面是来自于官网的介绍:Sikuli is a visual technology to automate and test graphical user interfaces (GUI) using images (screenshots). Sikuli includes Sikuli Script, a visual scripting API for Jython, and Sikuli IDE, an …

入门Java第十五天 线程

一、多线程 1.1进程和线程 进程:进程就是操作系统中运行的每一个应用程序。例如:微信,QQ 线程:线程是进程中的每一个任务。 多线程:在一个进程中,可以同时执行多个线程。同时完成多个任务。 并发&#x…

投票的链接怎么做出来的网上那些投票链接怎么做的网上投票器

用户在使用微信投票的时候,需要功能齐全,又快捷方便的投票小程序。而“活动星投票”这款软件使用非常的方便,用户可以随时使用手机微信小程序获得线上投票服务,很多用户都很喜欢“活动星投票”这款软件。“活动星投票”小程序在使…

【踩坑记录】使用OpenCV报错“ undefined symbol: TIFFReadRGBATileExt, version LIBTIFF_4.0”

问题描述 例如:使用OpenCV报错,找不到相关动态库: ImportError: /lib/libgdal.so.26: undefined symbol: TIFFReadRGBATileExt, version LIBTIFF_4.0解决方案: 运行前,先执行或者在./bashrc (根目录下ctr…

【图像分类】卷积神经网络之ZFNet网络模型结构详解

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 1. 前言 由于AlexNet的提出,大型卷积网络开始变得流行起来,但是人们对于网络究竟为什么能表现的这么好,以及怎…

Python编写GUI界面案例:实现免费下载器

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 本次网站: 本文所有模块\环境\源码\教程皆可点击文章下方名片获取此处跳转 开发环境: python 3.8 运行代码 pycharm 2022.3 辅助敲代码 模块使用: import parsel >>> pip install parsel…

从0开始学python -41

Python3 命名空间和作用域 命名空间 先看看官方文档的一段话: A namespace is a mapping from names to objects.Most namespaces are currently implemented as Python dictionaries。 命名空间(Namespace)是从名称到对象的映射,大部分的命名空间都是…

蓝牙耳机适合跑步戴吗,五款适合跑步蓝牙耳机推荐

音乐是坚持运动下去的不懈动力,在运动当中佩戴蓝牙耳机,能够让我们远离枯燥无味,运动更有律动感,运动更为畅快。运动当中佩戴的蓝牙耳机,佩戴舒适度以及牢固度是我们十分需要注意的,下面这几款比较热门的运…

IP-GUARD控制台账户输入多次错误密码锁定后该如何解锁?

其他管理员账户给锁定了,暂时只能等其锁定时间到了才可以再次输入,默认是设置是锁定30min; 1、如果急需此账户查看,可以使用admin系统管理员账户登录控制台,在工具-账户中清除这个账户的密码,重新登录设置密码。

idea远程调试线上jar包

有时候本地代码没问题但在线上运行会报错,这时候可以使用idea的remote功能调试线上jar包 步骤1 步骤2:新建remote 步骤3:配置服务器ip和端口 并复制生成的JVM参数供之后使用 步骤4:打jar包,并将生成的jar包放到服务…

想招到实干派程序员?你需要这种面试法

技术招聘中最痛的点其实是不精准。技术面试官或CTO们常常会向我们吐槽: “我经常在想,能不能把我们项目中的代码打印出来,作为候选人的面试题的一部分?” “能不能把一个Bug带上环境,让候选人来试试怎么解决&#xf…

电信网上用户资管理系统的设计与实现

技术:Java、JSP等摘要:在对目前市面上已经拥有的营业厅功能分析和整理后,为了保证营业厅中多种功能的分层次处理设计了一个的电信网上用户自管理系统,以web页面方式实现了与用户的交互,同时保证了移动电话计费管理系统…

数据结构期末复习总结(后章)

作者的话 作为一名计算机类的学生,我深知数据结构的重要性。在期末复习前,我希望通过这篇博客给大家一些复习建议。希望能帮助大家夯实数据结构的基础知识,并能够更好地掌握数据结构和算法的应用。 一、树与二叉树 1.基本概念 结点的度&am…

Google的中国用户注意!黑客正利用搜索结果投放恶意软件

2月16日研究人员发现,Google搜索结果中含有冒充知名软件的恶意软件下载链接。 研究人员通过测试后表示,攻击者为了增加浏览量,甚至通过在Google搜索结果中购买误导性广告,诱骗受害者下载安装恶意程序。 据悉,这些被冒…

【JavaSE】集合(Collection类)

文章目录1.集合框架1.1 collection1.2 map2. collection2.1.集合迭代2.2.contains和remove2.3集合中元素的删除3.List4.ArrayList5.LinkList6.Vector7.泛型7.1泛型初步7.2自动类型推断机制7.3 自定义泛型8.增强for循环9.Set9.1HashSet9.2 TreeSet1.集合框架 1.1 collection 1.…

4G模块DTU网关远程抄表方案(二):DL645/698协议国网电表

4G模块DTU网关远程抄表方案(二):DL645/698协议国网电表 1 DL 645协议简介 DL645协议是一种用于智能电能表的远程抄读通讯标准。制定该标准是为统一和规范多功能电能表与数据终端设备进行数据交换时的物理连接和通信链路及应用技术规范。DL645协议可用于远程监测电力传输和使用…

【2223sW1】LOG2

写在前面 好好学习,走出宿舍,走向毕设! 一些心路历程记录,很少有代码出现 因为鬼知道哪条代码到时候变成毕设的一部分了咧,还是不要给自己的查重挖坑罢了 23.2.22 今儿收获挺多,所以就把上一个LOG给发了…

戴尔dell inspiron-5598电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网,转载需注明出处。硬件型号驱动情况主板X99 K9 v2 Machinist处理器i5-10210U / *i7-10510U已驱动内存20GB已驱动硬盘1000GB SAMSUNG 860 QVO SATA已驱动显卡Intel UHD 620已驱动声卡Realtek ALC3204/236已驱动网卡RTL8168H Gigabit Ethernet已…

测量 R 代码运行时间的 5 种方法

简介 平常在撰写论文时,会需要比较算法之间的计算时间。本篇文章给出几种测量 R 代码运行时间的方法。本文是小编学习过程中的笔记,主要参考博客1,2。 1. 使用 Sys.time() 小编通常使用 Sys.time() 函数来计算时间。首先记录当前运行时刻&…

ChatGPT火到汽车圈,毫末智行、集度纷纷进场

作者 | 白日梦想家 编辑 | 于婷ChatGPT的火爆,已经席卷到了汽车领域。 众多相关企业宣布纷纷布局,车企也争相宣布将搭载类似产品。 2月初,百度宣布将在今年3月完成类似ChatGPT的项目“文心一言”的内部测试。据悉,该产品是基于百度…