请教:qt下如何调用linux下编译的驱动程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教:qt下如何调用linux下编译的驱动程序相关的知识,希望对你有一定的参考价值。

在Windows上搭建一个qt的开发环境,将你在linux下面写的代码拿来从新编译,一般来说不需要修改就可以通过,注意的是:linux和windows上的qt版本要一致 参考技术A 界面的话可使用qt等夸平台的图形库算法部分尽可能使用C和c++的标准函数库但遇到线程、网络和一些系统api调用只能分开写。可使用宏隔开不同操作系统的代码,例如#ifdefined(WIN32)#elifdefined(LINUX)#endif编译时在不同操作系统下加入相应的宏定义参数建议使用boost作为除图形之外的夸平台c++库使用,功能涵盖网络等应用

Linux下编译静态MinGW环境,编译windows平台Qt程序(使用MXE)

  • 参考链接:
  • MXE.
    >
    大多数程序都是在windows平台下开发的程序.windows 在现实中也是绕不过的一个系统平台,做为受过几年VC,MFC”虐待”的程序员,在做为一个程序员之前是一位Linux重度使用者,受够了MFC之后一直想要找一个框架替换,
    使用过GTK,wxWidgets,Qt,最后还是Qt用得多一些.我认为程序跨平台应该是一个基本标准,同一份代码不需改动,或者改动极少,放在不同的平台下编译就能使用.不同平台,同样的界面,同样的操作,同样的体验.
    这里要讲的是我如何在Linux 下开发跨平台的Qt程序,如何在linux开发windows程序.
    >

MXE (M cross environment)

  • MXE 真的是一个了不起的项目,详情请查看上面链接,非常详细.因为MXE就是在Linux下静态编译的跨平台环境,不需要你一步一步繁杂的编译工具链,直接按教程一键make就下载安装好,但是对Linux的操作熟悉会更加好排错.

安装教程

  • 尽量查看英文教程,这里简单记录一在debian8 x86_64下的安装过程.遇到问题找google.
1
2
3
4
5
6
7
 
apt-get install \
autoconf automake autopoint bash bison bzip2 flex gettext\
git g++ gperf intltool libffi-dev libgdk-pixbuf2.0-dev \
libtool libltdl-dev libssl-dev libxml-parser-perl make \
openssl p7zip-full patch perl pkg-config python ruby scons \
sed unzip wget xz-utils g++-multilib libc6-dev-i386 libtool-bin

获取最新版本

1
2
3
$ cd /opt
$ git clone https://github.com/mxe/mxe.git
$ make MXE_TARGETS=‘x86_64-w64-mingw32.static i686-w64-mingw32.static‘ qt5
  • 如果中间不出错,安装完成如下. i686-w64-mingw32.static目录下就在如:我电脑系统64位下编译32位的exe, 而x86_64-w64-mingw32.static就是编译生成64位的exe.
1
2
$ls /opt/mxe/usr/
bin i686-w64-mingw32.static include installed lib libexec share x86_64-unknown-linux-gnu x86_64-w64-mingw32.static

设置Qt

  • 英文教程有详细教程如何使用,如:(autotools,CMake,Makefile,QT…),这里贴图记录一下在QtCreator 下的设置.

  • 设置编译器

    技术分享设置编译器
  • 设置Qt版本

    技术分享设置Qt版本
  • 添加Qt Kit

    技术分享设置Qt版本
  • 现在就可以在Qt Creator里的工程下添加这个Kit里了,因为这里只是静态编了Release版本,如果指定为Debug配置,编译会出错的.

### 一些Qt 工程问题

Linux GL 链接库错误.

  • 如果在Linux遇到链接系统下的GL库出错,只要在.pro 加入QMAKE_LIBS_OPENGL -= -lGL,重新qmake,编译.

Release版本加入调试符号

  • 在实际开发有遇到这种问题,在Linux的编译Debug,Release调试与运行都没有错误,但是在windows平台下运就崩溃出错,这时调试最有效的调试手段是是加入调试符号信息,在windows下运行GDB加载该程序,查看出错的原因.pro \
  • 在.pro中在加如下三行,重新qmake,编译.带调试信息的exe会长到几十M.
1
2
3
QMAKE_CXXFLAGS_RELEASE += -g
QMAKE_CFLAGS_RELEASE += -g
QMAKE_LFLAGS_RELEASE =

https://yjdwbj.github.io/2016/09/13/Linux%E4%B8%8B%E7%BC%96%E8%AF%91%E9%9D%99%E6%80%81MinGW%E7%8E%AF%E5%A2%83-%E7%BC%96%E8%AF%91windows%E5%B9%B3%E5%8F%B0Qt%E7%A8%8B%E5%BA%8F/

以上是关于请教:qt下如何调用linux下编译的驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

windows下编译qt的mysql驱动

Linux下编写ENC28J60网卡驱动,完善网络设备框架

Linux下编写ENC28J60网卡驱动,完善网络设备框架

我在windows下用QT写了个程序,把这个源代码直接在linux下编译可以吗?

Windows下编译Qt的Mysql驱动

Linux下编写ENC28J60网卡驱动,完善网络设备框架