Qt实现软件从Windows到Linux跨平台

        Qt,面向C++图形界面的一种架构,对于GUI有很好的扩展,通过近一个月的学习和摸索,终于实现了Windows下的软件代码移植到Linux,实现了软件的跨平台。这其中走了不少弯路,遇到很多问题,主要是通过Internet找资料,上论坛求助,才使得最终成功,所以这也是我写这篇博文的初衷,希望能通过自己的经验总结,能够让更多像我一样的菜鸟少走弯路,走的更远。。。

         首先,介绍一下:为什么要用Qt为我们自己开发了一个小软件,在Windows下用C++写的代码,其中主要调用了MKL和Opengl两个库,我们的目的是想将我们的软件推广,让更多的人来使用我们的软件,那就希望除了在Windows下,在Linux(国外较多)环境下也能使用我们的软件,这就是要实现软件跨平台,那跨平台就必然涉及到了底层代码层的东西,首先要选择跨平台的工具,通过 上搜集资料,最终确定使用Qt。

         其次,确定使用Qt后,光靠Qt行不行t是面向对象的GUI,涉及到代码层、MKL库、Opengl库等最根本的东西时候还需要其他的工具进行辅助,那我就将我们开发使用的工具做以介绍,从代码最底层开始,在进行Qt开发时候,代码层是以静态库的形式链接到Qt的工程文件中,因此大量的底层代码都是以库的形式存在,在Windows下是以.lib形式存在,在Linux下是以.a或者.so形式存在,那么使用什么工具进行代码管理呢们选用的是Cmake进行代码编译生成库,其中Cmake在Windows和Linux下都能使用,Cmake的使很强大,就我个人而言,它能将.cpp以及.h等大量的代码及头文件统一管理,代码、库、头文件非常清晰明了,对于一个工程软件的理解思路很清晰,Cmake的语法很好掌握,下载Cmake的使用手册,然后按照手册中的例程走一遍,很多语法都是固定的,比如最简单的Hello Word!很多人都是从这开始学的吧,呵呵,我当时也是找了一个最简单的Hello Word!将Cmake的使用从头到尾熟悉了一遍,然后再在简单的基础上进行复杂扩展,其实只要最简单的东西熟悉了,难的也就变得简单了,因为难的是在简单的基础上迭代、扩展,基础的东西熟悉了可以少走弯路,对于Cmake我就简单介绍,具体细节可参照 上其他Cmake具体资料,我这里主要将我们跨平台的宏观大体思路进行介绍,涉及到细节的东西不做深入探讨,如果你能使用Cmake生成代码库:.lib,.a,.so那么你离成功就近了一步,那进行Windows向Linux跨平台时候,主要生成Linux下的.a和.so即可,.a是静态库,.so是动态库,下图显示成功生成了.a和.so库文件,.a和.so生成是靠代码控制。

           下一步,将成功生成的libmose.a静态链接库加入到Qt工程文件中,注意,现在所加的.a静态库只是在Qt中加入了代码管理库,其相当于逻辑集成库,因此当程序代码真正要实现功能时,比如要进行函数调用时,那么现在就要加入mkl等库文件,mkl库中有.a库中代码调用相应函数功能的函数,例如上述提到的vslNewStream()函数功能的实现定义在libmkl_intel_lp64.a中,因此只需要将代码中涉及到所有函数以及变量全部统一加入到Qt工程文件中,那么整个软件工程才能统一正常运转工作。在Linux下安装Qt,我们安装的Qt版本为QT Library: 4.8.1 QT Creator:2.4.1 Ubuntu:12.04,具体安装步骤不再详述。

             程序成功运行,而当我将LIBS += 顺序变换一下时,编译就会出错。如下图:

                   这是Qt信 槽按钮触发界面,也就是当点击yes时,信 触发连接到软件仿真程序,程序就开始运行,下图是点击yes按钮后仿真结果

                  那么Qt实现跨平台,调用MKL、Opengl库的工作基本告一段落,下面主要是将上述仿真结果参数写入QtOpengl中,那么就实现了Linux下Qt对代码仿真、显示一体化的功能,再进行后期的代码、算法优化,即实现将Windows下的软件移植到Linux下,实现软件跨平台。

文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24865 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2014年6月11日
下一篇 2014年6月11日

相关推荐