当前位置: 代码迷 >> 综合 >> Orange Pi4在PC机上QT5开发环境的搭建
  详细解决方案

Orange Pi4在PC机上QT5开发环境的搭建

热度:77   发布时间:2024-01-17 15:15:53.0

香橙派相关资料:http://www.orangepi.cn/downloadresourcescn/

1.下载交叉编译工具

下载地址:https://www.linaro.org/downloads/

进去之后选择

选择下的工具。

将交叉编译工具 gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz 复制到你想要安装的目录,并解压,命令:

hasee@ubuntu:/home/user$ sudo tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz 

我们可以通过命令将该文件夹重命名,并赋予权限

hasee@ubuntu:/home/user$ sudo mv gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu gcc-aarch64-linux-gnu
hasee@ubuntu:/home/user$ sudo chmod -R 777 gcc-aarch64-linux-gnu

将路径/home/user/gcc-aarch64-linux-gnu/bin添加到环境变量,命令

sudo gedit /etc/profile

在末尾添加内容(该内容与你自己的目录有关):

export PATH="/home/user/gcc-aarch64-linux-gnu/bin:$PATH"

然后输入命令让环境变量生效(也可以重启系统):

source  /etc/profile

查看是否成功

aarch64-linux-gnu-gcc -v

 

2.编译QT库

从如下链接下载

http://download.qt.io/official_releases/qt/5.9/5.9.1/

将下载的包复制到目录下

解压

tar -xvf qt-everywhere-opensource-src-5.9.1.tar.xz

输入

hasee@ubuntu:/home/user$ sudo gedit ./qt-everywhere-opensource-src-5.9.1/qtbase/mkspecs/linux-aarch64-gnu-g++/qmake.conf

在其中添加如下内容:

QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv8-a -lts
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a -lts

使用命令

//使用cd命令进入/home/user/qt-everywhere-opensource-src-5.9.1目录后,执行如下命令
sudo gedit auto.sh

在里面添加

#!/bin/sh
./configure \
-prefix /home/user/qt5.9.1-arm \
-confirm-license \
-opensource \
-release \
-make libs \
-xplatform linux-aarch64-gnu-g++ \
-pch \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-dbus \
-no-xcb \
-no-separate-debug-info \

其中

-prefix /home/user/qt5.9.1-arm 是编译后的安装目录。

-xplatform linux-aarch64-gnu-g++为交叉编译相关选择。

接着修改该文件权限并执行

sudo chmod u+x auto.sh 
./auto.sh

其中在执行./auto.sh时如果提示没有权限,使用sudo ./auto.sh如果报错

Project ERROR: Cannot run compiler 'aarch64-linux-gnu-g++'. Maybe you forgot to setup the environment?

此时正确的操作应该是

//超级权限
hasee@ubuntu:/home/user/qt-everywhere-opensource-src-5.9.1$ sudo su
//然后执行如下命令
root@ubuntu:/home/user/qt-everywhere-opensource-src-5.9.1# ./auto.sh

接着输入

root@ubuntu:/home/user/qt-everywhere-opensource-src-5.9.1# make

等待一段时间,可以去喝口小茶。

编译如果遇到如下错误

 

是因为没有使用超级用户运行make,可以使用sudo su进入超级用户再make,或者使用sudo make。

但是可能会遇到如下错误,提示编译工具找不到,首先检查一下交叉编译工具的环境变量是否添加。

如果添加了,可能是如下原因:

之前设置的环境变量的PATH,是普通用户的路径,而sudo执行make的时候,使用的是超级用户权限,那也就使用了超级用户的PATH(但是这个PATH里,并没有你设置的那个环境变量PATH)

解决方法:先打开一个超级用户权限的shell

sudo su

在当前shell下,设置环境变量:

//注意,该命令是直接在shell中输入的,并非更改profile文件
export PATH=$PATH:/home/user/gcc-aarch64-linux-gnu/bin

然后通过这个shell窗口,进入qt源码目录/home/user/qt-everywhere-opensource-src-5.9.1再make就可以解决问题(始终使用超级用户)。

然后再输入命令:

sudo make install

3.安装qtcreator

 下载,链接如下

http://download.qt.io/official_releases/qt/5.9/5.9.1/

输入命令安装软件

hasee@ubuntu:/home/user$ ./qt-opensource-linux-x64-5.9.1.run 

一直点下一步,然后选择如图的工具进行安装

安装完成后打开QtCtreator,目录如下

点击 工具-选项-构建和运行

在编译器的Manual中添加GCC和C++路径为交叉编译工具的路径

在Qt Versions中添加qmake为编译好的qt目录,如下图

在构建套件Kit设置如下

然后apply-OK即可。

 

4.将交叉编译的Qt库复制到板子上

在装好的qt目录的上级目录输入如下命令(我的qt安装目录是):

hasee@ubuntu:/home/user$ tar -zcvf qt5.9.1.tar.gz qt5.9.1-arm

作用是将qt目录压缩打包,然后通过nfs或者ssh(或者其他手段将打包后的文件复制到香橙派4开发板上)。

比如我将压缩包放在开发板的家目录下

sl@orangepi4:~$ 

执行解压命令

tar -zxvf qt5.9.1.tar.gz

接着将qt程序运行所依赖的相关文件、配置等添加到环境变量中,操作如下

sudo vi /etc/profile

在其中添加如下内容

export QTEDIR=/home/sl/qt5.9.1-arm/
export LD_LIBRARY_PATH=/home/sl/qt5.9.1-arm/lib:$LD_LIBRARY_PATH
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTEDIR/plugins
export QT_QPA_PLATFORM=linuxfb
export QT_QPA_FONTDIR=/usr/share/fonts/truetype/droid

然后重启板子让环境变量生效,接下来就可以使用QT5了。

 

5.遇到的问题

a. 编译并远程部署问题

提示

Cannot run:No command given

在QT工程目录下的xxx.pro文件里,加上

target.path=/home/sl/Desktop    //(这里的目录是你香橙派的目录,任何目录都可以,只要有读写权限)

然后再加一句话 

INSTALLS+=target

b. 开发板提示 libQt5Widgets.so.5错误

./Enforcement: error while loading shared libraries: libQt5Widgets.so.5: cannot open shared object file: No such file or directory

默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,通常通过源码包进行安装时,如果不指定--prefix,会将库安装在/usr/local/lib目录下;当运行程序需要链接动态库时,提示找不到相关的.so库,会报错。也就是说,/usr/local/lib目录不在系统默认的库搜索目录中,需要将目录加进去。

1、首先打开/etc/ld.so.conf文件

2、加入动态库文件所在的目录:执行vi /etc/ld.so.conf,在"include ld.so.conf.d/*.conf"下方增加"/usr/local/lib"(也可能是自己的复制进去的库文件目录路径)。

3、保存后,在命令行终端执行:/sbin/ldconfig -v;其作用是将文件/etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache以供使用,因此当安装完一些库文件,或者修改/etc/ld.so.conf增加了库的新搜索路径,需要运行一下ldconfig,使所有的库文件都被缓存到文件/etc/ld.so.cache中,如果没做,可能会找不到刚安装的库。

c. 香橙派4不显示界面问题

armbian的桌面系统中,安装QT库后,建立远程部署,运行QT程序,提示Failed to open tty (Permission denied),就发现显示终端是在tty上。

通过快捷键ctrl+alt+f1,调出tty(需要用户名和密码),即可发现界面在此处显示。

d. 香橙派4运行QT5界面字体乱码问题解决方法

在运行香橙派时,QT5界面上字体乱码,可能只有中文乱码,也可能中文英文和数字一起乱码或者不显示。

而且打印界面报错:

这个错误是说找不到字体目录的文件夹 /usr/share/fonts/truetype/droid,这种情况就是该目录不存在。

首先安装字体,命令

sudo apt install ttf-wqy-zenhei

然后使用如下命令查看字体文件在哪个目录下

fc-list :lang=zh

我的目录如图

上图显示字体目录为

/usr/share/fonts/truetype/wqy/
//该目录下有wqy-zenhei.ttc字体文件

使用如下命令编辑配置文件

vi /etc/profile

更改如下位置

保存退出后,使用如下命令让配置生效

source /etc/profile

然后再去运行QT界面,数字汉字都显示正常,ok。

e. linux上安装字体方法

查看系统中已经安装的中文字体,我们可以使用如下命令:

fc-list :lang=zh

linux系统中没有微软雅黑字体。我们现在需要把MSYH.TTF(微软雅黑字体文件)文件安装到linux中。

把MSYH.TTF复制到/usr/share/fonts/目录下,也可以在fonts下另外建立目录,注意给目录和字体赋予权限。

在字体目录下运行终端,建立字体索引信息,更新字体缓存,使用如下命令(可能需要用到sudo命令):

sudo mkfontscale
sudo mkfontdir
sudo fc-cache

至此,字体已经安装完毕。

现在我们再来查看微软雅黑字体,是否安装成功,使用如下命令:

fc-list :lang=zh

f.在ARM板上qt字体变小解决方法

QT在ARM板上计算DPI值错误。解决的方法就是设置好qt的dpi。

qt是根据显示器的物理长度或者宽度于分辨率的关系来计算dpi的。

首先在命令行输入

sudo vim /etc/profile

对于QT5以下的版本设置如下:

export QWS_DISPLAY="LinuxFB:mmWidth95:0" 
export QWS_SIZE="480x272"

对于QT5:

export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=480x272:mmsize=95x53:offset=0x0

size指定屏幕分辨率,mmsize指定屏幕物理尺寸。offset指定偏移量。通过调整mmsize的值可以等比调整字体大小,也就是说该参数可以不是屏幕的实际尺寸。
这样更改后qt在所有的平台上显示的字体都一样大了。

ps:关于设置开机自启QT界面后字体依然很小的问题,参见

https://blog.csdn.net/sehanlingfeng/article/details/109772418