WhyCan Forum

本站无需注册,无需积分,无需回复可下载所有资料,如果真的喜欢小站,请您注册之后请至少回复一个帖子激活Id,谢谢支持! 站长QQ: 516333132 (挖坑网/填坑网) admin@whycan.cn

您尚未登录。

#1 2019-06-27 16:29:08

Gentlepig
会员
注册时间: 2018-10-24
累计积分: 157

nuc972移植qt,遇到了一些问题。

官方sdk里的application文件夹下有qt和tslib文件夹。

查看bsp使用手册,tslib没有介绍如何使用,网上搜了下,依次执行:
./autogen-clean.sh
./autogen.sh
./configure --host=arm-linux ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux-.cache --prefix=/usr/local/tslib/ make sudo make install(忘了当时用的什么,从网上找了一个)
然后在/usr/local/tslib下生成了tslib文件。
------------------------------------------------------------
bsp使用手册有qt移植的介绍:
指定 QMAKE_INCDIR 及 QMAKE_LIBDIR,如下:
QMAKE_INCDIR = path to /tslib-1.1/install/include  (我改成了usr/loca/tslib/include)
QMAKE_LIBDIR = path to /tslib-1.1/install/lib           (我改成了usr/loca/tslib/lib)

然后执行:
$ export MY_CC_QT4_PREFIX=/usr/local/Trolltech/QtEmbedded-4.8.5   (指定qt安装路径)

./configure -prefix ${MY_CC_QT4_PREFIX} -release -opensource -static -qconfig dist -no-exceptions -no-accessibility -no-stl -no-qt3support -no-xmlpatterns -no-multimedia -no-audio-backend -no-phonon -no-phonon-backend -no-svg -no-webkit -no-javascript-jit -no-script -no-scripttools -no-declarative -no-declarative-debug -qt-zlib -qt-freetype -no-gif -qt-libpng -no-libmng -no-libtiff -qt-libjpeg -no-openssl -nomake tools -nomake demos -nomake examples -nomake docs -nomake translations -no-nis -no-cups -no-iconv -no-pch -no-dbus -embedded arm -platform qws/linux-x86-g++ -xplatform qws/linux-nuc970-g++ -no-gtkstyle -no-nas-sound -no-opengl -no-openvg -no-sm -no-xshape -no-xvideo -no-xsync -no-xinerama -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-mitshm -no-fontconfig -no-xinput -no-xkb -no-glib -qt-gfx-linuxfb -qt-mouse-tslib -qt-kbd-linuxinput

结果:
You have not explicitly asked to use pkg-config and are cross-compiling.
pkg-config will not be used to automatically query cflag/lib parameters for
dependencies

The tslib functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR and QMAKE_LIBDIR in
/home/any/nuc970bsp/applications/qt-everywhere-opensource-src-4.8.5/mkspecs/qws/linux-nuc970-g++.

查了下说是如有有安装pkg-config,在.configure 后面加-force-pkg-config参数,查了下which pkg-config,机子上有,于是就加后边那个参数。
结果:
You have asked to use pkg-config and are cross-compiling.
Please make sure you have a correctly set-up pkg-config
environment!


Warning: PKG_CONFIG_PATH has not been set.  This could mean
the host compiler's .pc files will be used. This is probably
not what you want.

The tslib functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR and QMAKE_LIBDIR in
/home/any/nuc970bsp/applications/qt-everywhere-opensource-src-4.8.5/mkspecs/qws/linux-nuc970-g++.

离线

#2 2019-06-27 16:52:19

Gentlepig
会员
注册时间: 2018-10-24
累计积分: 157

Re: nuc972移植qt,遇到了一些问题。

以上暂时算是三个问题。

1总有pkg-config这个提示。
加了-force后又来了新的警告。

2.The tslib functionality test failed.
搜了下,先排除qmake.conf的问题,我已经设了。网上有用.configrue时加上-verbose选项,可以看到详细信息。发现:
make: arm-linux-g++: Command not found
我用的是bsp里的安装脚本安装的,自动安装了交叉编译器,arm-linux-gcc好像是个软连接,连接到了arm-nuvoton-linux-uclibceab-gcc。

3.无论前两个问题是否解决,执行make和make install后,Qt-4.8.5文件夹出现在了usr/local/Trolltech目录下。
而我之前指定的是:
export MY_CC_QT4_PREFIX=/usr/local/Trolltech/QtEmbedded-4.8.5

最近编辑记录 Gentlepig (2019-06-27 17:01:31)

离线

#3 2019-06-27 17:03:01

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,956

Re: nuc972移植qt,遇到了一些问题。

这些问题用上了 buildroot 都不是问题,本站可以搜索 buildroot

离线

#4 2019-06-27 17:10:09

Gentlepig
会员
注册时间: 2018-10-24
累计积分: 157

Re: nuc972移植qt,遇到了一些问题。

以下是qmake.conf文件内容:

  1 #                                                                           
  2 # qmake configuration for building with arm-linux-g++
  3 #
  4
  5 include(../../common/linux.conf)
  6 include(../../common/gcc-base-unix.conf)
  7 include(../../common/g++-unix.conf)
  8 include(../../common/qws.conf)
  9
10 # modifications to g++.conf
11 QMAKE_CC                = arm-linux-gcc
12 QMAKE_CXX               = arm-linux-g++
13 QMAKE_LINK              = arm-linux-g++
14 QMAKE_LINK_SHLIB        = arm-linux-g++
15
16 # modifications to linux.conf
17 QMAKE_AR                = arm-linux-ar cqs
18 QMAKE_OBJCOPY           = arm-linux-objcopy
19 QMAKE_STRIP             = arm-linux-strip
20
21 load(qt_config)

-----------------------------------------
我把
QMAKE_CC                = arm-linux-gcc 改成/usr/local/arm-Linux-4.8/bin/arm-Linux-gcc
以下三行同理,结果仍提示arm-Linux-g++命令未找到。

最近编辑记录 Gentlepig (2019-06-27 17:38:17)

离线

#5 2019-06-27 17:12:24

Gentlepig
会员
注册时间: 2018-10-24
累计积分: 157

Re: nuc972移植qt,遇到了一些问题。

晕哥 说:

这些问题用上了 buildroot 都不是问题,本站可以搜索 buildroot

想找些解决办法,涨点经验。

离线

#6 2019-06-27 17:34:05

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,956

Re: nuc972移植qt,遇到了一些问题。

这个阔以有,感谢分享!

离线

#7 2019-06-27 17:44:54

Gentlepig
会员
注册时间: 2018-10-24
累计积分: 157

Re: nuc972移植qt,遇到了一些问题。

晕哥 说:

这个阔以有,感谢分享!

不是来分享的,是来求助的...

离线

#8 2019-06-28 10:56:23

Gentlepig
会员
注册时间: 2018-10-24
累计积分: 157

Re: nuc972移植qt,遇到了一些问题。

搜了搜,感觉像是没有指定编译器路径的问题。
那么,如何指定编译器路径?在执行./configure时加-CC=/usr/local/arm_linux_4.8,这样?

另,交叉编译器是执行sdk里的install.sh脚本时,自动安装的。
安装的路径是/usr/local/arm_linux_4.8,使用的是arm-linux-gcc,这个好像是个软连接。我如何知道他的实际路径呢?
$ arm-linux-gcc -v
使用内建 specs。
COLLECT_GCC=arm-linux-gcc
COLLECT_LTO_WRAPPER=/usr/local/arm_linux_4.8/libexec/gcc/arm-nuvoton-linux-uclibceabi/4.8.4/lto-wrapper
目标:arm-nuvoton-linux-uclibceabi
配置为:../configure --prefix=/usr/local/arm_linux_4.8 --target=arm-nuvoton-linux-uclibceabi --enable-static --disable-__cxa_atexit --with-gnu-ld --disable-libssp --disable-multilib --enable-target-optspace --disable-libsanitizer --enable-tls --disable-libmudflap --enable-threads --without-isl --without-cloog --with-float=soft --disable-decimal-float --with-abi=aapcs-linux --with-cpu=arm926ej-s --with-float=soft --with-mode=arm --enable-languages=c,c++ --enable-poison-system-directories --enable-shared --disable-libgomp --with-sysroot=/usr/local/arm_linux_4.8 --with-build-time-tools=/usr/local/arm_linux_4.8/arm-nuvoton-linux-uclibceabi/bin --enable-shared
线程模型:posix
gcc 版本 4.8.4 (GCC)

离线

#9 2019-06-28 12:20:35

Gentlepig
会员
注册时间: 2018-10-24
累计积分: 157

Re: nuc972移植qt,遇到了一些问题。

qmake.conf文件中,编译器需要指定完整路径。
指定完完整路径后还是不行,/usr/loca/arm_linux_4.8/bin/arm-linux-gcc/g++是个软连接,换成实际指向的文件。
终于配置成功了,可以make了。

离线

#10 2019-06-29 16:38:33

Gentlepig
会员
注册时间: 2018-10-24
累计积分: 157

Re: nuc972移植qt,遇到了一些问题。

QT例程在宿主机上编译后复制到开发板,执行后没报错,买的屏幕还没到,不知道成功没。
但是在开发板上执行qmake -v,却提示找不到qmake,可在开发板的/usr/local/bin里明明有qmake啊。

同样的还有Python2.7,按教程交叉编译好后,将生成的bin, lib, include三个文件夹,移动到开发板的/usr/下。
结果在目标板上运行输入python,结果却没反应。

已在/etc/profile里设了qt和python的路径。
export LD_LIBRARY_PATH=/lib:/mnt/mmcblk0p2 /mnt/mmcblk0p1/scan_zbar

export PYTHONPATH=/usr/lib/python2.7:$PYTHONPATH
export PYTHONHOME=/usr/lib/python2.7:$PYTHONHOME

export QWS_MOUSE_PROTO=Tslib:/dev/input/event0

export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.8.5
export LD_LIBRARY_PATH=$QTEDIR/lib:$LD_LIBRARY_PATH
export QT_QPA_GENERIC_PLUGINS=tslib
export QT_QPA_FONTDIR=$QTEDIR/lib/fonts
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=800x480:mmSize=800x480:offset=0x
export QT_QPA_FB_TSLIB=1

export PATH=$QTEDIR/bin:$PATH

最近编辑记录 Gentlepig (2019-06-29 16:59:23)

离线

#11 2019-06-29 17:09:03

Gentlepig
会员
注册时间: 2018-10-24
累计积分: 157

Re: nuc972移植qt,遇到了一些问题。

972的bsp里的根文件系统的/etc/profile,里面原来只有两行,后面的都是我加的。
原来的两行是:
  1 export LD_LIBRARY_PATH=/lib:/mnt/mmcblk0p2                                 
  2 /mnt/mmcblk0p1/scan_zbar
很好奇,这两行是不是应该合成一行? 第二行没有命令语句吧?
-----------------------------------------------------------------------------
这个,网友解释了下,说第二行是执行scan_zbar这个脚本。

最近编辑记录 Gentlepig (2019-06-29 17:11:50)

离线

#12 2019-06-29 17:11:47

smartcar
会员
注册时间: 2018-02-19
累计积分: 362

Re: nuc972移植qt,遇到了一些问题。

Gentlepig 说:

972的bsp里的根文件系统的/etc/profile,里面原来只有两行,后面的都是我加的。
原来的两行是:
  1 export LD_LIBRARY_PATH=/lib:/mnt/mmcblk0p2                                 
  2 /mnt/mmcblk0p1/scan_zbar
很好奇,这两行是不是应该合成一行? 第二行没有命令语句吧?

第1行是设置全局环境变量,
如果合并到一行就是这样:

LD_LIBRARY_PATH=/lib:/mnt/mmcblk0p2 /mnt/mmcblk0p1/scan_zbar

估计第2行的 scan_zbar 动态加载了 so 文件,

而 so 文件在 /mnt/mmcblk0p1/ 目录

最近编辑记录 smartcar (2019-06-29 17:12:58)

离线

#13 2019-06-29 17:16:42

Gentlepig
会员
注册时间: 2018-10-24
累计积分: 157

Re: nuc972移植qt,遇到了一些问题。

smartcar 说:
Gentlepig 说:

972的bsp里的根文件系统的/etc/profile,里面原来只有两行,后面的都是我加的。
原来的两行是:
  1 export LD_LIBRARY_PATH=/lib:/mnt/mmcblk0p2                                 
  2 /mnt/mmcblk0p1/scan_zbar
很好奇,这两行是不是应该合成一行? 第二行没有命令语句吧?

第1行是设置全局环境变量,
如果合并到一行就是这样:

LD_LIBRARY_PATH=/lib:/mnt/mmcblk0p2 /mnt/mmcblk0p1/scan_zbar

估计第2行的 scan_zbar 动态加载了 so 文件,

而 so 文件在 /mnt/mmcblk0p1/ 目录

谢谢,上一个问题,能否解答下?

离线

#14 2019-06-29 17:20:57

smartcar
会员
注册时间: 2018-02-19
累计积分: 362

Re: nuc972移植qt,遇到了一些问题。

你生成的 qmake 是在 这里吗: /usr/local/arm_linux_4.8/bin/qmake ?

离线

#15 2019-06-29 17:24:08

Gentlepig
会员
注册时间: 2018-10-24
累计积分: 157

Re: nuc972移植qt,遇到了一些问题。

smartcar 说:

你生成的 qmake 是在 这里吗: /usr/local/arm_linux_4.8/bin/qmake ?

/usr/local/Trolltech/QtEmbedded-4.8.5/bin
在宿主机上交叉编译生成的是/usr/local/Trolltech/QtEmbedded-4.8.5目录,然后将这个目录移到了目标机的相同位置。
而qmake命令在该目录的bin目录下。
---------------------------------------------------
# echo $PATH                         
/usr/local/Trolltech/QtEmbedded-4.8.5/bin:/sbin:/usr/sbin:/bin:/usr/bin

最近编辑记录 Gentlepig (2019-06-29 17:25:21)

离线

#16 2019-06-29 17:32:55

smartcar
会员
注册时间: 2018-02-19
累计积分: 362

Re: nuc972移植qt,遇到了一些问题。

/usr/local/Trolltech/QtEmbedded-4.8.5/bin/qmake 执行不了, 对吗?

离线

#17 2019-06-29 17:35:12

Gentlepig
会员
注册时间: 2018-10-24
累计积分: 157

Re: nuc972移植qt,遇到了一些问题。

smartcar 说:

/usr/local/Trolltech/QtEmbedded-4.8.5/bin/qmake 执行不了, 对吗?

执行不了:
/usr/local/Trolltech/QtEmbedded-4.8.5/bin # ./qmake -v                         
-/bin/sh: ./qmake: not found

离线

#18 2019-06-29 17:56:10

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,956

Re: nuc972移植qt,遇到了一些问题。

文件存在,但是执行不了对吧?

执行  file qmake 命令,看看是不是arm目标平台?如果是就跑不了,要到arm系统才可以跑

离线

#19 2019-06-29 18:38:34

Gentlepig
会员
注册时间: 2018-10-24
累计积分: 157

Re: nuc972移植qt,遇到了一些问题。

晕哥 说:

文件存在,但是执行不了对吧?

执行  file qmake 命令,看看是不是arm目标平台?如果是就跑不了,要到arm系统才可以跑

就是在目标板nuc972上运行报错,目标板的根文件系统没有file这个指令。

离线

#20 2019-06-29 21:46:17

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,956

Re: nuc972移植qt,遇到了一些问题。

Gentlepig 说:
晕哥 说:

文件存在,但是执行不了对吧?

执行  file qmake 命令,看看是不是arm目标平台?如果是就跑不了,要到arm系统才可以跑

就是在目标板nuc972上运行报错,目标板的根文件系统没有file这个指令。

你上面编译的 qmake 不能在 arm linux 跑, 只能在x86 linux 跑.

qmake 的作用是用来生成 Makefile 的, 你在 arm linux 版本跑没有意义.

离线

#21 2019-06-29 22:24:50

Gentlepig
会员
注册时间: 2018-10-24
累计积分: 157

Re: nuc972移植qt,遇到了一些问题。

晕哥 说:
Gentlepig 说:
晕哥 说:

文件存在,但是执行不了对吧?

执行  file qmake 命令,看看是不是arm目标平台?如果是就跑不了,要到arm系统才可以跑

就是在目标板nuc972上运行报错,目标板的根文件系统没有file这个指令。

你上面编译的 qmake 不能在 arm linux 跑, 只能在x86 linux 跑.

qmake 的作用是用来生成 Makefile 的, 你在 arm linux 版本跑没有意义.

谢啦,大概明白了。

离线

#22 2019-07-02 09:36:49

Gentlepig
会员
注册时间: 2018-10-24
累计积分: 157

Re: nuc972移植qt,遇到了一些问题。

又遇到了问题,移植pythono和qt的根文件系统打包成yaffs文件系统,大小为130M多。下载到目标板,可以执行qt的例程程序。
后来又做了些改动,然后又新建了个qt工程编译后将生成的可执行文件移到根文件系统里,再打包,发现有150M多了。
然后下载到目标板,执行qt程序,报错。然后发现目标板的qt文件目录里只有个bin文件夹,应该还有include,lib,plugins,mkspecs四个文件夹才对。
以为是在linux下烧录的问题,于是又切到win下用nu-writer烧录,结构目标板的qt目录下是空的了...

离线

#23 2019-07-04 11:47:54

Gentlepig
会员
注册时间: 2018-10-24
累计积分: 157

Re: nuc972移植qt,遇到了一些问题。

之所以看到qt目录下是空的,原因是上级目录下有两个qt目录,一个是最后烧写进去的,里面有相应目录。另一个是空的。

该问题,通过擦除nand flash解决。
不过,难道每次烧写文件系统镜像都要先擦除吗?

最近编辑记录 Gentlepig (2019-07-04 11:49:36)

离线

#24 昨天 16:28:37

Gentlepig
会员
注册时间: 2018-10-24
累计积分: 157

Re: nuc972移植qt,遇到了一些问题。

这几天又遇到了些问题,有的解决了,在这里记录下来吧。
qt4的程序加-qws后缀可运行,qt5的加-platform linuxfb可运行。而且,好像可以开机后export QT_QPA_PLATFORM一次设置。
qt5程序编译时,.pro文件需要加QT += widgets.

qt不显示中文字体,可从网上下个字体,存到/usr/share/fonts下(我是用buildroot建的带qt5的文件系统,自己没有设qt相关路径,如果是自己移植的qt,路径可能不是这个)。

qt显示的字体太小,一开始我试着执行程序时指定大字体,效果只是大了一点。后来我搜到这个https://blog.csdn.net/u013968786/article/details/51119588
我的是qt5,于是加了export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=800x480:mmsize=250x150:offse
t=0x0,问题解决。

离线

#25 昨天 17:05:03

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,956

Re: nuc972移植qt,遇到了一些问题。

感谢楼主分享!

离线

#26 昨天 17:38:06

Gentlepig
会员
注册时间: 2018-10-24
累计积分: 157

Re: nuc972移植qt,遇到了一些问题。

晕哥 说:

感谢楼主分享!

请教个问题:
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=800x480:mmsize=250x150:offse
这句,我建了个qt.sh脚本,指定用#!/bin/sh打开,里面就上边这句。然后在/etc/init.d/rcS的最后加一句,sh .../qt.sh,结果没效果。
于是,我干脆把这句加到/etc/init.d/rcS的最后,结果还是没效果。
我在这句export后面,加了句echo $QT_QPA_PLATFORM,重启后,显示运行了这部分,echo显示的也是正确的。但是,我再手动echo $QT_QPA_PLATFORM,则输出的是空的。好像是,加的这句,只在/etc/init.d/rcS执行的时候有效,rcS执行完了,也就无效了?

最后,加到/etc/profile的最后,有效果。

请教,这是为什么?

离线

#27 昨天 18:46:11

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,956

Re: nuc972移植qt,遇到了一些问题。

在 init.d 里面执行应该是没有应用Qt环境变量的,所以不能跑,即使跑起来也不属于任何终端,不能用 ctrl + c 中断可执行程序执行。

以上是猜想

离线

页脚