相关文章推荐
勤奋的毛衣  ·  android-annotation:错误: ...·  2 月前    · 
勤奋的毛衣  ·  chrome修改js内存限制·  5 月前    · 
勤奋的毛衣  ·  android-annotation:错误: ...·  10 月前    · 
勤奋的毛衣  ·  Configuring Cloud ...·  10 月前    · 
威武的香瓜  ·  [转]Entity Framework ...·  9 小时前    · 

QT通过追加编译开关来区分PC机linux系统和arm开发板环境上运行的代码

背景:arm开发板上的程序是在PC机的linux系统上编写的,需要在PC的linux系统编译和调试,查看运行结果,但是最终还是要在arm开发板上运行,在调试过程中,由于2个开发环境的差异,会导致代码的不同,例如代码中涉及到的路径的内容就不一样,加入编译开关后,就避免了每次在开发板运行的时候,都需要修改代码,使用方便。

方法:追加宏定义“#ifdef __arm__”,表示代码在arm系统上有效。

注意:需要追加头文件的定义“#include <QtGlobal>”,在“<QtGlobal>”中定义了许多全局宏定义的宏。

#ifdef Q_OS_LINUX:表示代码在linux系统上有效

#ifdef Q_OS_UNIX:表示代码在unix系统上有效

示例如下:

--------------------------------

#include <QtGlobal>

#ifdef __arm__

/* 可以在嵌入式ARM开发板运行的代码 */

/* 注意“arm”前后都有2个下划线“_” */

#else

/* 在PC机的linux系统上运行的代码 */

#endif

-------------------------------------

# arm 64 的 编译 宏 contains(QMAKE_HOST.arch, aarch64){ #aarch64 是 编译 器类型,如果不是这个 编译 器, 可以把.arch 替换成对应的类型 # arm 64平台 最近在做有关 嵌入式 的东西,很多不懂。 1、想在板子上 运行 QT 编好的程序,必须要在PC的 linux 系统里用 QT 编吗? 2、在windows系统里编好的 QT 程序,经过交叉 编译 后能直接 运行 在板子上吗?还是板子需要弄个 QT 环境啥的?就是往里面安个相同版本的 QT ? 谢谢。。。。。 1、想在板子上 运行 QT 编好的程序,必须要在PC的 linux 系统里用 QT 编吗? 不需要.但是必须经过交叉 编译 . (win 1.Busybox源码请网上自行下载, 编译 方法请参考百度。 2.交叉 编译 工具链的设置也请先设置好。 如果以上1、2没有问题,那么可以使用以下脚本,制作一个给 ARM 开发板 使用的文件系统。 可以自行定制使用,加入自己的Test demo。 #!/bin/bash #yuanxin.yang develop 2015-07-05 #文件系统和Busybox的路径====>可自己定制 FILESYSTEM=/Softwave/filesystem #定义自己制作的文件系统存放的位置 BUSYBOX=/Softwave/ arm /busybox-1.17.2 #Busybox软体的位置 在 嵌入式 Linux 应用中,有时会用到图形界面。在目前流行的图形界面中,比较有名的当数 Qt Qt 是1991年由挪威Trolltech公司开发的一个跨平台C++图形用户界面应用程序开发框架,主要用来开发GUI(Graphical User Interface)程序。 Qt 是面向对象的框架,使用特殊的 代码 生成扩展(称为元对象 编译 器(Meta Object Compiler, moc))以及一些宏, Qt 很容易扩展,并且允许真正地组件编程。 Qt 作为一个跨平台的GUI 框架,在源码上对所有平台都是一致的,Unix/Lin 1、可执行程序在终端中 运行 前,需要配置好环境变量,我们用export的形式配置的,这种形式只在当前终端中生效(因为,如果我们手动 运行 进程时,会出现缺库等错误,此时只要在当前终端中在export 一下就可以了。) 2、我们发布exe程序时,也是要将plugin lib等打包发布的。 qt creator下载地址:https://download. qt .io/archive/ qt creator/ 因为我机器是 linux arm 架构,所以要选择tar.gz直接 编译 (纯 linux 可以选择.run的文件,直接chmod给权限,然后 运行 )。 我这里选择的是2.8.1版本, qt -creator-2.8.1-src.tar.gz 2. 解压(你自己指定解压路径),查看文档,并执行文档内容 这里有个文档,README,打开,看到他有 编译 的提示,我下面翻译一 https://www.cnblogs.com/Braveliu/p/5107550.html https://blog.csdn.net/simonforfuture/article/details/78580510 https://www.cnblogs.com/xiangtingshen/p/11002464.html https://blog.csdn.net/abeldeng/article/details/25029507 DESTDIR: 用于指明 编译 的目标文件的输. ARM NEON 编程系列2 - 基本指令集前言本系列博文用于介绍 ARM CPU下NEON指令优化。博文github地址:github相关 代码 github地址:githubNEON指令集主流支持目标平台为 ARM CPU的 编译 器基本都支持NEON指令。可以通过在 代码 中嵌入NEON汇编来使用NEON,但是更加常见的方式是通过类似C函数的NEON Instrinsic来编写NEON 代码 。就如同NEON ... 使用的 arm 编译 器为aarch64, 很多博客都是使用 QMAKE_HOST.arch 进行判断,但这并不能分辨出 aarch64 编译 器,有的更离谱的是定义一个函数,实在让人无言,自行尝试解决方案如下: contains( QT _ARCH, arm 64){ message(" arm 64") #在这里处理 arm 64所需 }else{ message("x86") linux /windows 区分 : win32{ //do something... unix{ //do something... 你应该用CONFIG += c++11自动启用C ++ 11 编译 器标志。在 qt 安装中查找.prf个文件。 我不知道它们在Windows上的位置,但在我的 Linux 安装中,它们不在/opt/ Qt /5.4/gcc_64/mkspecs/features。您可能想要阅读qmake文档:可以使用其他配置功能设置qmake 在功能(.prf)文件中指定。 这些额外功能通常提供 支持在构建过程中使用的... 程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与 Linux 操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在 Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个 Linux 用户的必修功课之一。 Linux 的Shell种类 我们在使用 QT 编程的时候,有时会遇到跨平台的状况(毕竟 QT 本身就是因优秀的跨平台特性而出名),在这种情况下,判断当前是哪一种平台就非常必要了,这里介绍一下 QT 提供的各种判断操作系统和 编译 平台的做法: 1、如果仅仅想要当前是windows、mac还是 linux 系统的话,可以直接使用宏: Q_OS_ LINUX :定义在 linux 系统中 Q_OS_WIN:定义在windows系统中 Q_OS_OS...
 
推荐文章