qt编译64位程序
‘壹’ 命令行编译qt程序 有几种方式
一、环境配置
1
要想使用Qt进行命令行编译,环境配置是必不可少的一步。环境配置好以后,我们才能使用相应的qmake,nmake等命令,并且链接到编译程序时所需要的头文件和库文件。
小提示:为了帮助大家解决环境配置的问题,新版Qt已经自带了相应的批处理文件,我们只要在编译前执行对应的批处理文件即可。
2
首先,我们在命令行编译时需要运行qmake.exe,因此我们需要将该文件的路径添加到PATH变量中。要想做到这一点,我们只需要执行Qt安装目录下的
Qt5.5.1\5.5\msvc2013\bin\qtenv2.bat 批处理即可。
3
其次,在编译过程中,我们还需要用到nmake命令,并且链接相应的头文件和库文件,以生成最终的可执行程序。要想做到这一点,我们只需要执行VS安装目录下的
D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat批处理即可。
注意:由于我安装的是Qt for VS2013 32位版,所以运行的是vcvars32.bat,如果你安装的是64位版,请运行vcvars64.bat。
4
至此,环境配置就大功告成了。关于这个环境配置,需要特别指出的是,这个配置是临时性的,只在当前命令行窗口有效;也就是说,你关闭命令行窗口后,均需要重新运行相应的批处理文件。
END
二、命令行编译
首先,将以上两个批处理文件复制到要编译的工程目录中。
然后,点击菜单“文件”-“打开命令提示符”,在该目录下打开命令行窗口。
执行批处理文件qtenv2.bat。注意,由于该批处理会跳转到Qt安装目录,我们执行完毕后需要回到我们的当前目录(我这里由于Qt安装目录与当前目录不在同一个磁盘,只要切换磁盘便回到当前目录了)。
执行批处理文件vcvars32.bat。
下面,正式开始编译。首先,生成工程文件。键入命令:
qmake -project
说明:生成的工程文件名会与你当前的目录名同名。例如,我当前的目录名为test,生成的工程名则为test.pro。
接着,输入qmake test.pro,生成相应的Makefile文件。
最后,键入nmake,生成最终的可执行文件。
‘贰’ RK3568源码编译与交叉编译环境搭建
本篇文章旨在指导如何为飞凌OK3568-C开发板构建linux系统所需的软件交叉编译环境。对于C/C++代码开发,只需在Ubuntu虚拟机中安装RK3568对应的交叉编译器(gcc/g++)即可。若要进行Qt开发,则需额外配置交叉编译环境以编译与RK3568配套的Qt源码。以下为两种环境配置方法的详细步骤。
### C/C++交叉编译环境配置
1. **下载aarch64类型的gcc**:
在Linaro官网获取针对RK3568(Cortex-A55内核64位)开发板的GCC交叉编译工具链。推荐下载:`gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz`。解压后,配置环境变量并使用`aarch64-linux-gnu-gcc`或`aarch64-linux-gnu-g++`交叉编译C或C++程序。
2. **交叉编译C/C++程序测试**:
编写一个简单的C++测试程序(main.cpp),使用`aarch64-linux-gnu-g++`编译并运行,验证编译环境正确性。
3. **板子的WIFI自动配网**:
使用脚本自动连接WIFI,确保开发过程中网络连通。将脚本加入开机自启动程序中,实现自动连接。
### RK3568 Linux源码编译
- **基础环境配置**:安装必要的库,如依赖包和Qt开发所需库。安装Linux版Qt Creator(可选)以方便Qt开发。
- **准备RK3568源码**:从飞凌官方资料中复制源码至Ubuntu虚拟机,解压并准备好编译环境。
- **编译RK3568源码**:确认虚拟机有足够磁盘空间和内存。执行编译脚本,选择ok3568配置,完成编译过程。编译完成后,生成适合全烧写或分步烧写的镜像文件。
- **内核单独编译**:如果仅修改内核代码,可单独编译内核,简化编译过程。
### Qt程序交叉编译测试
- **Qt程序交叉编译**:利用RK3568源码编译结果中的工具进行Qt程序编译测试,确保交叉编译环境正常工作。
- **Qt程序在板子中运行**:通过ADB传输编译出的可执行文件至板子,验证Qt程序的正确运行。
### 总结
本文详细介绍了为飞凌OK3568-C开发板搭建软件开发环境的全过程,包括C/C++和Qt开发所需的交叉编译环境配置。通过本文的步骤指导,开发者可以顺利为该开发板构建Linux系统,并进行相应的编程工作。
‘叁’ qt 64 位编程和32位编程的区别
一、64位编译器系统下可以使用64位的无符号或有符号变量了。
二、64位操作系统提供了更多的编程接口API,这些多出来的接口主要是涉及将32位数据类型扩展为64位的问题了。比如原来关于内存管理相关的函数,参数是32位的,在64位操作系统下就需要提供参数为64位的管理函数了等等。