当前位置:首页 » 编程软件 » qt交叉编译遇到的问题

qt交叉编译遇到的问题

发布时间: 2023-06-10 05:16:16

‘壹’ 请高手指点,为什么QT交叉编译好以后,可执行文件在板子上执行出现一下问题,求帮忙

//你这样试试,你上面只是设置执行环境,直接执行下面代码
LD_LIBRARY_PATH=/库绝对路径你的执行文件

//如果再不行,你直接将所需库拷贝到/lib和/usr/lib里面去

‘贰’ Qt的交叉编译问题

修改QtCreator的配置。
tools-->Options--->Build && Run --->Qt Versions
把你的开发板的编译工具链扔进去。再到你发的那个图里设置。

‘叁’ 编译玩qt交叉编译环境,进行qt程序开发时make总是报错

缺少了些文件

可以看到第一句:
/usr/local/arm/2.95.3/arm-linux/bin/ld: cannot find -lqte

应该在交叉编译器上,你可以用别人做好的arm-linux-gcc编译链。我也弄了好久,前几天弄好了

‘肆’ 兄弟我最近刚学QT,到了交叉编译这一块,make之后老是出现 下面的错误

交叉编译的时候要加上配置要加上:-embedded arm
例如:
./configure \
-no-pch \
-no-dbus \
-no-nas-sound \
-no-opengl \
-no-sm \
-no-xshape \
-no-xinerama \
-no-xcursor \
-no-xfixes \
-no-xrandr \
-no-xrender \
-no-fontconfig \
-no-xkb \
-no-glib \
-little-endian \
-no-mmx -no-3dnow -no-sse -no-sse2 \
-embedded arm \
-xplatform qws/linux-arm-g++ \
-qconfig smal

希望可以帮助到你

‘伍’ 有关QT CREATOR 交叉编译的问题

请先把QtE成功移植到板子上.
然后把QtE的qmake和交叉编译的工具链添加到QtCreator中.
在PC上写完界面后,把项目的编译环境改成QTE再编译一下.把生成的的可执行程序和QTE的lib, nfs或tftp到板子上.然后还要改变环境变量,有几个必须改的环境变量.
export QTDIR=
export QTDEDIR=
export PATH=
export LD_LIBRARY_PAHT=
全部添加指向你的lib.如果你怕麻烦可以把QTE的lib考到/lib目录中.
然后就可以./你的可执行程序了.

‘陆’ qt交叉编译后不显示窗口

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

‘柒’ 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++

‘捌’ 交叉编译qt程序时出现“错误: 未知的转义序列:‘\Q’ ” 请问如何解决。。。在x86上编译只是警告。。

在C++中‘\’是转义字符。所以如果你不是用来转义可以用‘/’,如果你需要字符‘\’,请使用“\\”代替‘\’

‘玖’ Qt creator交叉编译带图片的程序出现问题,版本4.7

找不到 libQtGui.so 这个库, 添加环境变量 LIBRARY_PATH=/opt/Qt4.7/lib 试试
另外你使是用 arm-linux-gcc 编译程序, 需要保证 QT 下的 libQtGui.so 库也是用 arm-linux-gcc 编译的, 否则编译链接会出问题

热点内容
五菱宏光s顶配有哪些配置 发布:2025-02-11 15:50:57 浏览:286
华为8加128配置有哪些 发布:2025-02-11 15:48:20 浏览:579
压缩机三转子 发布:2025-02-11 15:45:54 浏览:827
linux操作系统shell 发布:2025-02-11 15:45:53 浏览:338
安卓模拟器如何选择安装 发布:2025-02-11 15:34:26 浏览:176
安卓手机和华为哪个好用 发布:2025-02-11 15:32:11 浏览:555
大众车载dv设置密码多少 发布:2025-02-11 15:26:06 浏览:413
sqlserver连接超时 发布:2025-02-11 15:24:25 浏览:741
求三端类引擎可编译的源码 发布:2025-02-11 15:20:01 浏览:467
sql2000质疑 发布:2025-02-11 14:52:21 浏览:521