当前位置:首页 » 编程软件 » qt交叉编译Android

qt交叉编译Android

发布时间: 2023-07-20 04:01:00

Ⅰ QT 5.2.1 编译ANDROID 问题

情况,之前电脑安装Qt5.1.0 msvc2012正常运行,都可以用,后来安装了Qt5.2.0 for Android 发现Qt5.1.0 msvc2012就不能编译任何东西了,但是Qt5.2.0 for Android却可以编译桌面应用,另外vs2012却可以正常运行。
网上找到方法都不能解决,说什么添加环境变量啊之类的
错误图片如下:
偶尔构建时到这样就不动了:
最经常是出现如下:
Plain Text code
jom: xx\Makefile.Debug [debug\main.obj] Error 2
jom: xx\Makefile [debug] Error 2
09:34:23: 进程"D:\Qt\Qt5.2.1_vc2012\Tools\QtCreator\bin\jom.exe"退出,退出代码 2 。
Error while building/deploying project untitled (kit: Desktop Qt 5.2.1 MSVC2012 32bit)
当执行步骤 'Make'时
09:34:23: Elapsed time: 00:01.
在把使用jom代替nmake的勾去掉后,编译错误如下:
NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cl.EXE"”: 返回代码“0xc0000135”
Stop.
NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\nmake.exe"”: 返回代码“0x2”
Stop.
09:38:27: 进程"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\nmake.exe"退出,退出代码 2 。
Error while building/deploying project untitled (kit: Desktop Qt 5.2.1 MSVC2012 32bit)
当执行步骤 'Make'时
09:38:27: Elapsed time: 00:01.eclispse如何运行C?哥哥救救make: *** 没有指明目标并且找不到 makefile。 停止。????ubuntu下编译ACE-6.2.0windows下makefile编写问题关于linux makefile的问题关于linux编程的菜鸟问题大侠帮忙改个makefile文件能支持交叉编译第一步就遇到问题,makefile不知道怎么回事了

Ⅱ 在windows环境中怎么编译qt for android

1.下载安装Qt 5.1.0 for Android (Windows 32-bit, 716 MB) 2.打开Qt Creator,打开帮助,输入android,找到官方说明,按照教程一步步的操作。 3.首先需要下载以下四个软件: 1)The Android SDK Tools 下载安装 2)The Android NDK 下载并解压,注意不能有空格 3)Apache Ant v1.8 or later 下载并解压,同上 4)OpenJDK v6 or later 下载并解压 4.打开Qt Creator,选择工具-选项-android,配置好刚刚安装的文件路径,并首答差点击举橘【启动android AVD管理器】 5.点击 New 新建一个android模拟器,根据自己需要选择Device 6.点击ok-ok,并选择刚刚建立的设备,点击Start启动,此过程比较慢,耐心等待。 7.重启Qt Creator 已经可以看到有设备了,我们检查 构建和运行 中 构建套件和Qt版本是否正确,确认无误接下来就可以建立工程 8.新建一个Qt gui项者皮目,选择android for arm 9.修改代码,显示hello Qt #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QLabel> class MainWindow : public QMainWindow { Q_OBJECT private: QLabel *label; public: MainWindow(QWidget *parent = 0); ~MainWindow(); }; #endif // MAINWINDOW_H #include "mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { label=new QLabel("hello Qt",this); label->setGeometry(10,10,100,30); } MainWindow::~MainWindow() { } 10.直接点击 构建 查看能不能正常编译,如果此间报错,可以留言,尽力为大家解决。一切正常的话直接点击运行,此过程较慢,会编译成apk文件并且部署到模拟器上。

Ⅲ 如何进行Qt应用程序的交叉编译

1.设置环境变量: PATH=添加为交叉环境下编译后生成的qmake路径,通常和主机的系统是一种架构,同时需要确保交叉gcc编译器在在PATH定义 QMAKESOEC=交叉编译的对象的的平台描述文件,例如makespec/qws/linux-arm-g++ QTDIR=Qt的安装文件,存放这库和头文件 LD_LIBRARY_PATH=存放的是Qt的交叉编译后的库,准备为目标编译链接的库 2。执行环境变量 通常我们都会将以上的设置放置在一个bash脚本中,需要的时候就执行一下。开始编译 1.使用qmake -project来生成项目文件****.pro 2使用qmake来生成Makefile文件 3使用make来编译移植:使用readeif工具来分析目标系统的以来库,然后相关的库到目标文件系统内。通常我们也是采取脚本的方式来完成。 一般而言,凡是有规律的或者重复性的工作,我们都可以采取脚本的方式来解决。

Ⅳ Qt交叉编译遇到的问题

QT相关的安装软件包:

(1) tmake-1.13.tar.gz (编译工具,如progen与tmake)

(2) qt-embedded-2.3.7.tar.gz (提供了qte的库)

(3) qt-x11-2.3.2.tar.gz (为了生成相应的QT工具,如designer和qvfb等)

(4) qtopia-free-1.7.0.tar.gz (QTE的桌面环境程序)

(5) cross-3.3.2.tar.bz2 (交叉编译工具)

一、安装工具

1 安装 tmake

在 Linux 命令模式下运行以下命令:

tar xfz tmake-1.11.tar.gz

export TMAKEDIR=$PWD/tmake-1.11

export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++

export PATH=$TMAKEDIR/bin:$PATH

2 安装 Qt/Embedded 2.3.7

在 Linux 命令模式下运行以下命令:

tar xfz qt-embedded-2.3.7.tar.gz

cd qt-2.3.7

export QTDIR=$PWD

export QTEDIR=$QTDIR

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

./configure –qconfig local–qvfb -depths 4,8,16,32

make sub-src

cd ..

上述命令 ./configure -qconfig -qvfb -depths 4,8,16,32 指定 Qt 嵌入式开发包生成虚拟缓冲帧工具qvfb,并支持 4,8,16,32 位的显示颜色深度。另外我们也可以在 configure 的参数中添加-system-jpeg 和 gif,使 Qt/Embedded 平台能支持 jpeg、gif 格式的图形。

上述命令 make sub-src 指定按精简方式编译开发包,也就是说有些 Qt 类未被编译。Qt 嵌入式开发包有 5种编译范围的选项,使用这些选项,可控制 Qt 生成的库文件的大小,但是您的应用所使用到的一些 Qt 类将可能因此在 Qt 的库中找不到链接。编译选项的具体用法可运行./configure -help 命令查看。

在这一过程的configure中出现了问题:有一个变量没有声明,发现是少了一个头文件,加上即可,make顺利通过,看到了enjoy!

3 安装 Qt/X11 2.3.2

在 Linux 命令模式下运行以下命令:

tar xfz qt-x11-2.3.2.tar.gz

cd qt-2.3.2

export QTDIR=$PWD

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

./configure -no-opengl

make

make -C tools/qvfb

mv tools/qvfb/qvfb bin

cp bin/uic $QTEDIR/bin

cd ..

根据开发者本身的开发环境,也可以在 configure 的参数中添加别的参数, 比如-no-opengl 或-no-xfs,可以键入./configure -help 来获得一些帮助信息。

在这个安装过程中也出现了很多错误,典型的就是在make过程中:

/usr/local/qt-2.3.2/include/qvaluestack.h:57: error: cannot convert 'QValueListIterator<QMap<QString, QString> >' to 'const char*' for argument '1' to 'int remove(const char*)'

/usr/local/qt-2.3.2/include/qvaluestack.h: In member function 'T QValueStack<T>::pop() [with T = QString]':

xml/qxml.cpp:2502: instantiated from here

/usr/local/qt-2.3.2/include/qvaluestack.h:57: error: cannot convert 'QValueListIterator<QString>' to 'const char*' for argument '1' to 'int remove(const char*)'

make[2]: *** [xml/qxml.o] Error 1

make[2]: Leaving directory `/usr/local/qt-2.3.2/src'

make[1]: *** [sub-src] Error 2

make[1]: Leaving directory `/usr/local/qt-2.3.2'

make: *** [init] Error 2

这个错误是说,在文件qvaluestack.h的57行出错。改正方法是修改文件qt-2.3.2/ include/qvaluestack.h的 第57行,将remove( this->fromLast() );改为 this->remove( this->fromLast() );

修改时可能要更改文件权限,变成可写的,chmod 666 qvaluestack.h。然后make顺利通过,看到了enjoy。

二、交叉编译 Qt/Embedded 的库

开发居于 Qt/Embedded 的应用程序要使用到 Qt/Embedded 的库,编写的 Qt 嵌入式应用程序最终是在YLE270开发板上运行的,因此在把 Qt 嵌入式应用程序编译成支持 YLE270 的目标代码之前,需要两样东西,一个是 arm9 的 linux 编译器,另一个是经 arm9 的linux 编译器编译过的 Qt/Embedded 的库。安装交叉编译工具 cross-3.3.2 前面已经安装过了。

这一步主要是配置 Qt/Embedded2.3.7 的安装,Qt/Embedded 的安装选项有很多个,您可以在命令行下直接输入“./configure”来运行配置,这时安装程序会一步一步提示你输入安装选项。您也可以在“./configure”后输入多个安装选项直接完成安装的配置。在这些选项中有一个选项决定了编译 Qt/Embedded 库的范围,即可以指定以最小,小,中,大,完全 5 种方式编译 Qt/Embedded 库。另外 Qt/Embedded 的安装选项还允许我们自己定制一个配置文件,来有选择的编译 Qt/Embedded 库,这个安装选项是“-qconfig local” ;当我们指定这个选项时,Qt/Embedded库在安装过程中会寻找qt-2.3.7/src/tools/qconfig-local.h 这个文件,如找到这个文件,就会以该文件里面定义的宏,来编译链接 Qt/Embedded 库。

具体过程如下:

cd qt-2.3.7

export QTDIR=$PWD

export QTEDIR=$QTDIR

make clean

./configure –xplatform linux-arm-g++ -shared –debug (接下行)

-qconfig local -qvfb -depths 4,8,16,32

make

cd ..

在make中出现了错误,有变量没有声明,原来是优龙公司为了避免初学者在一开始就直接接触到 Qt/Embedde 的复杂的宏编译选项,把这些宏定义到一个名为 qconfig-local.h的安装配置文件中,在安装 Qt/Embedded 的时候,需要把这个文件复制到 Qt/Embedded 的安装路径的/src/tools 子路径下,

cp /配置文件所在路径/qconfig-local.h ./src/tools

make顺利通过,看到了enjoy。

最后就可以在命令行下输入make 命令对整个工程进行编译链接了,在这里,要把过程中产生的文件放在同一个文件夹里面,方便应用。

在最后make完毕以后我还是遇到了一个问题,就是生成的可执行文件不能运行,运行时提示:./hello cannot execute binary file,当然不能直接在自己的主机上运行了,因为生成的二进制文件要下到板子上运行的。接上液晶屏,板子上电,把生成的可执行文件下载到板子上,要chmod一下,不然权限不够,终于在液晶屏上看到了自己弄的小程序,好开心!

三、添加一个 Qt/Embedded 应用到 QPE

以hello,world!为例

1 在工作的机器上解包 qtopia

tar zxvf qtopia-free-1.7.x.tar.gz

cd qtopia-free-1.7.x

export QTDIR=$QTEDIR

export QPEDIR=$PWD

export PATH=$QPEDIR/bin:$PATH

注意在上面已经设定环境变量 QPEDIR 为 QPE 的安装(解包)路径。

2 建立 Hello,World 的例子程序的图标文件

方法是:制作一个 32 X 32 大小的 PNG 格式的图标文件,将该文件存放在$QPEDIR/pics/inline 目录下,然后使用以下命令将$QPEDIR/pics/inline 目录下的所有图形文件转换成为一个 c 语言的头文件,这个头文件包含了该目录下的图形文件的 rgb 信息。

qembed --images $QPEDIR/pics/inline/*.*

> $QPEDIR/src/libraries/qtopia/inlinepics_p.h

3 交叉编译 qtopia

在$QPEDIR 路径下,运行以下命令

cd src

./configure –platform linux-arm-g++

make

cd ..

在这一过程中也出现了比较大的错误,在make的时候又出现了error,是resource.cpp的174行的变量qembed_findImage没有声明,考虑到以前遇到的情况,推断可能是少了某个头文件,但是又不知道是哪一个,google了很久都没有找到解决办法,没办法只好点开src/libraries/qtopia下面的每一个头文件看了一遍,还是没有发现有含有这个变量的文件,继续google,然后发现了inlinepics_p.h中包含qembed_findImage,于是vi /usr/local/qtopia-free-1.7.0/src/libraries/qtopia/inlinepics_p.h,发现inlinepics_p.h是空白的,原来是

qembed --images $QPEDIR/pics/inline/*.*

> $QPEDIR/src/libraries/qtopia/inlinepics_p.h

出了错误,重新操作一遍这一步,再查看inlinepics_p.h,发现正常了,要继续交叉编译qtopia:

make clean

./configure –platform linux-arm-g++

Ⅳ QtCreator配置交叉编译工具链

环境:ubuntu16.04桌面环境。

说明:使用ubuntu16.04桌面环境,安装QtCreator之后,再利用QtCreator开发QT5 GUI程序,如果编译的程序要运行在arm linux嵌入式系统中,则必须配置交叉编译工具链。

主要配置内容:调试器、编译器、QT版本。

1、打开工具,点击选项。

2、选择选项中的构建与运行,概要界面。

3、构建套件(kit)界面。

4、Qt Versions界面。

5、编译器界面。

6、Debuggers界面。

7、Qbs界面。

8、交叉编译例子:

Ⅵ C/C++源文件直接交叉编译生成.so文件供安卓应用程序调用,可以吗

Jni调用就行了,是要按规则写接口api,如果接口很多,也没法,那是你的业务问题,要重新设计业务逻辑。我们之前用的c++单独交叉编译一个进程,和安卓界面用tcp通信,如果接口多也以为着协议多,一样的。

Ⅶ qt交叉编译后不显示窗口

qt交叉编译后不显示窗口是因为误将类成员函数名称命名为show。程序在执行到w.show()之后,编译器将成员函数看作show函数的重载,因此不再调用默认的show函数导致窗体无法显示。

Ⅷ 如何用Qt写Android应用

我也有动力写这篇文章了。 下面我简单介绍一下用Qt Creator写Android应用的步骤。 PS: 在这之前你应该搭建好一个Qt-Android环境,参考我另一篇文章: 设置qt-android开发环境 第一步:创建一个Android项目 我以Empty Qt Project为例。点击Choose后出现一个对话框要求填写Project的名字和选择路径,输入完成后点击Next,到下面一个比较重要的操作:选择Qt Version 注意,默认是选择Destkop的,正确应该按上图设置。设置后按Next确认一下,没有错就按Finish完成Qt-Android项目的建立。只要正确建立了Qt项目,就完成了一大半了。下图是完成后的一个截图: 第二步:编写程序 在这步大家按照平常Qt Creator的步骤写程序就好。但是注意的是,有些模块暂时还没有移植,例如Qt网络模块,所以不能有网络相关的应用(不过我想这迟早会移植的)。 作为例子,我就用hello world吧:#include<QApplication#include<QLabelintmain(intargc, char**argv){QApplicationapp(argc, argv);QLabel*label=newQLabel("<palign=centerHello, World!</p");label-show();returnapp. exec();}第三步:设置编译选项 Projects标签 - Run 展开Package configurations,选择Android target SDK,(android7为例) 展开紧跟下面的Deploy configurations,选择Deploy local qt libs 然后按左边倒数第三个绿色三角按钮运行: 第四步:手机上运行 你写的应用会打包成apk放在你项目文件夹里的/android/bin里面。把它拷到手机上安装。但是这样手机还不能运行这个程序,毕竟Android系统没有Qt的库。这个时候你就需要Ministro,一个为Android系统Qt程序运行下载所需要的库。可以到电子市场搜索Ministro,或者到Ministro项目里下载:Ministro 。安装好Ministro后再运行Qt程序,根据提示下载需要的库。

Ⅸ 如何进行Qt应用程序的交叉编译

首先得把我们在X86机上调好的程序进行交叉编译,如果在X86上都没有通过的话。。那就不用交叉编译了,(肯定是通不过的),还是到正题吧,设置好环境变量,我们用以用echo 来查看环境变量,echo $TMAKEPATH ,如果返回的不是.../qws/linux-arm-g++ 的字符的话,我们一定得从新设置,

export TMAKEPATH=/tmake 的安装路径/qws/linux-arm-g++ ,同时QTDIR一定得要指定QTE的安装路径,设置过程如下:

export QTDIR=...../qt-2.3.7

以上环境设置好后,我们可以使用tmake来生成Makefile,注意这里我们是用tmake,而不是用qmake(注意),tmake工具在tmake包里面。 具体做法,我们可以在命令行下打:

tmake -o Makefile 工程名.pro

这样我们就新生成了一个Makefile文件,下一步,我们要打开这个文件,做一些小的修改

1: 将LINK=arm-linux-gcc 改为:LINK=arm-linux-g++

2:将LIBS=$(SUBLIBS) -L$(QTDIR)/lib -lm -lqte这句话改为:

LIBS=$(SUBLIBS) -L/opt/gcc-2.3.2-glibc-3.3.2/lib -L$(QTDIR)/lib -lm -lqte

加上你的交叉编译的库。

最后我们可以make了,一个可以在您的板子上可以运行的二进制文件产生了。linux

热点内容
36脚本大厅作者 发布:2025-02-06 14:55:53 浏览:408
买电脑配送服务器吗 发布:2025-02-06 14:54:58 浏览:243
服务器怎么删除资源 发布:2025-02-06 14:36:14 浏览:672
安卓如何设置桌面返回键 发布:2025-02-06 13:58:15 浏览:48
bi可视化php 发布:2025-02-06 13:50:15 浏览:932
shell写脚本文件 发布:2025-02-06 13:47:32 浏览:231
健身器材脚本 发布:2025-02-06 13:46:36 浏览:856
怎么从手机里卸载存储卡 发布:2025-02-06 13:35:04 浏览:644
诛仙青云志2ftp 发布:2025-02-06 13:34:48 浏览:34
mill91编程 发布:2025-02-06 13:10:27 浏览:294