Ubuntu搭建Qt环境

本文详细介绍了在Ubuntu系统中搭建Qt开发环境的步骤,包括安装QtCreator、解决依赖问题、安装SSH和libgl,以及针对 BusyBox 文件系统进行的SSH交叉编译。此外,还讲解了如何在QtCreator中配置远程调试设备,涉及到Qt库的交叉编译和移植到开发板的过程。
摘要由CSDN通过智能技术生成

1 ubuntu搭建qt环境的好处

ubuntu上可以安装qtcrater,然后一键下载到板子上,不需要手动编译;

2 安装linux版本的qtcreater

注意,必须要先安装g++再安装qtcreater,否则会出问题!!!

下载g++编译器

sudo apt-get install aptitude 

#aptitude比apt-get强大,因为它会自动搜索被下载软件的依赖包,然后
#并把它们一起下载下来;

sudo aptitude install g++

注意,第一个弹出来的选项选n
第二个才选y

安装ssh
ssh是一种远程登录控制台的工具,也就是可以通过网络登录设备的控制台;
同样作用的工具还有telnet,
telnet和ssh的区别:
telnet是明文传输,ssh加密传输;

sudo apt-get install ssh

安装libgl,否则在ubuntu执行qt时会提示: can’t not find -lGL
参考网页:
https://blog.csdn.net/u013066730/article/details/60467159

第一种解决方法:

sudo apt-get install libgl1-mesa-dev

第二种解决方法:

sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0 /usr/lib/libGL.so

首先你要下载安装包,下载的网址:
http://download.qt.io/archive/qt/?tdsourcetag=s_pcqq_aiomsg
在这里插入图片描述

注意,不要在32位Linux上安装,因为32位的Linux不能安装,必须要用64位的linux;

然后把安装包放到Linux中:

执行安装命令:

sudo ./qt-opensource-linux-x64-5.11.1.run 

#注意,一定要用sudo,否则会出问题
在这里插入图片描述

安装好后如何打开:
第一种方法:
点击左下角菜单 -> 编程 -> Qt Creater

第二种的方法:
直接在安装目录下运行qtcreater命令
我们是安装在/opt下
/opt/Qt5.11.1/Tools/QtCreator/bin/qtcreator

3 配置一键下载到板子上

如果你板子上的文件系统是busybox,首先要交叉编译ssh,假如你板子上的系统是ubuntu或者debian,就可以直接

apt-get install ssh

busybox是一个 “命令瑞士军刀”,它把诸如ls.cd,rm,cp…一系列命令都编译成一个独立的可执行文件 -> 文件名就叫做busybox,

busybox的优点是非常的小,功能还不错

因为我们的文件系统是busybox的,所以需要交叉编译ssh;

3.1 交叉编译ssh

OpenSSH 源码获取
这里我们一共需要移植三个软件包: zlib、 openssl 和 openssh。依次到这三个软件的官网下
载对应的源码,官网如下:
zlib 官网: http://www.zlib.net/
openssl 官网: https://www.openssl.org/source/
openssh 官网: http://www.openssh.com/

3.1.1 移植 zlib 库

tar -vxzf zlib-1.2.11.tar.gz //解压

解压完成以后得到一个名为“zlib-1.2.11”的 zlib 源码文件。另外新建一个名为“zlib”的
文件夹来保存 zlib 的编译结果。进入 zlib 源码目录,然后配置并编译,命令如下:

cd zlib-1.2.11/ //进去 zlib 源码
CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld AD=arm-linux-gnueabihfas ./configure --prefix=/home/song/linux/IMX6ULL/tool/zlib //配置
make //编译
make install

将zlib中的 lib 目录下的 zlib 库文件拷贝到开发板根文件系统的/lib 目录下

3.1.2 移植ssl

tar -vxzf openssl-1.1.1d.tar.gz

解压完成以后就会生成一个名为 openssl-1.1.1d 的目录,然后在新建一个名为“openssl”的文件夹,用于存放 openssl 的编译结果。进入到解压出来的 openssl-1.1.1d 目录中,然后执行如
下命令进行配置:

./Configure linux-armv4 shared no-asm --prefix=/home/song/linux/IMX6ULL/tool/openssl
CROSS_COMPILE=arm-linux-gnueabihf-

上述配置中“ linux-armv4”表示 32 位 ARM 凭条,并没有“ linux-armv7”这个选项。
CROSS_COMPILE 用于指定交叉编译器。配置成功以后会生成 Makefile,输入如下命令进行编译:

make
make install

编译并安装成功的 openssl 目录中的 lib 目录是我们需要的,将 lib 目录下的 libcrypto 和 libssl 库拷贝到开发板根文件系统中的/usr/lib 目录下,命令如下:

sudo cp libcrypto.so* /home/song/linux/nfs/rootfs/lib/ -af
sudo cp libssl.so* /home/song/linux/nfs/rootfs/lib/ -af

3.1.3 移植 openssh 库

3.1.3.1 交叉编译 openssh 库

先解压 openssh 源码,命令如下:

tar -vxzf openssh-8.2p1.tar.gz

解压完成以后就会生成一个名为“openssh-8.2p1”的文件夹,进入此文件夹里面,然后配置并编译 openssh,命令如下:

cd openssh-8.2p1/
./configure --host=arm-linux-gnueabihf --with-libs --with-zlib=/home/song/linux/IMX6ULL/tool/zlib --with-ssl-dir=/home/song/linux/IMX6ULL/tool/libopenssl --disable-etcdefault-login CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-ar //配置
make //编译

在配置 openssh 的过程中,“–with-zlib”参数用于指定 zlib 库所在的目录,“–with-ssl-dir”
参数用于指定 openssl 库所在的目录,编译 openssh 的时候不用“make install”。

3.1.3.2 将 openssh 相关文件拷贝到开发板中

openssh 交叉编译完成以后在开发板中创建如下所示目录(如果存在的话就不需要创建):

/usr/local/bin
/usr/local/sbin
/usr/local/libexec
/usr/local/etc
/var/run
/var/empty

创建命令如下:

mkdir /usr/local/bin -p
mkdir /usr/local/sbin -p
mkdir /usr/local/libexec/ -p
mkdir /usr/local/etc -p
mkdir /var/run -p
mkdir /var/empty/ -p

上述目录创建好以后将如下文件拷贝到开发板的/usr/local/bin 目录下:

scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan

将如下文件拷贝到开发板的/usr/local/sbin 目录下:

sshd

将如下文件拷贝到开发板的/usr/local/etc 目录下:

moduli ssh_config sshd_config

将如下文件拷贝到开发板的/usr/local/libexec 目录下:

sftp-server ssh-keysign

创建软连接,进入开发板中的/bin 目录下,输入如下命令创建软连接:

cd /bin/
ln -s /usr/local/bin/scp
ln -s /usr/local/bin/sftp
ln -s /usr/local/bin/ssh
ln -s /usr/local/bin/ssh-add
ln -s /usr/local/bin/ssh-agent
ln -s /usr/local/bin/ssh-keygen
ln -s /usr/local/bin/ssh-keyscan

再进入开发板的/sbin 目录下,输入如下命令创建软连接:

cd /sbin/
ln -s /usr/local/sbin/sshd

3.2 交叉编译qt库

build.sh:

!/bin/bash
  ./configure -opensource \
          -confirm-license \
          -little-endian \
          -prefix /opt/Qt-4.8.7-nuc972 \
          -silent \
          -shared \
          -release \
          -embedded arm \
         -xplatform qws/linux-arm-g++  \
         -platform qws/linux-x86-g++ \
         -webkit \
         -qt-gfx-transformed \
         -qt-libtiff \
         -qt-libmng  \
         -qt-mouse-tslib \
         -qt-mouse-pc \
         -no-mouse-linuxtp \
         -no-neon \
         -nomake tools \
         -qt-libjpeg \
         -qt-libpng \
         -qt-zlib \
         -I /opt/tslib-nuc972/include \
         -L /opt/tslib-nuc972/lib

开发板原厂送的qt4.8.6使用不了的,因为它的编译环境是32位的机器,和我们的不符合,所以他的用不了;

增加env-qt4.sh

#!/bin/sh

export set QTDIR=/opt/Qt-4.8.7-nuc972/             
export set LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export set PATH=$QTDIR/bin:$PATH   
export set QT_QWS_FONTDIR=$QTDIR/lib/fonts
export QWS_MOUSE_PROTO="TSLIB:/dev/input/event0 Intellimouse:/dev/input/mouse1" 
#export set QWS_DISPLAY='/dev/fb0'
export QT_PLUGIN_PATH=$QTDIR/plugins

把中文字库加入qt的字体目录:
随便找一个ttf字体文件,放到/opt/Qt-4.8.7-nuc972/lib/fonts/

修改/etc/profile,让它开机自动执行qt脚本:

vi /etc/profile

加入:

source /opt/env-qt4.sh

重启:

reboot

测试qt库是否移植成功:

/opt/Qt-4.8.7-nuc972/examples/mainwindows/dockwidgets/dockwidgets -qws

3.3 在qtcreaeter中增加远程调试设备

先增加arm-linux-gcc套件
在这里插入图片描述

增加一个编译工具套件:
这个编译工具套件其实就是我们的Qt-4.8.7里的qmake

在qt工程的pro文件要增加安装路径:
远程调试qt的原理是把qt执行文件传输到板子的指定目录上,然后就运行它

target.path = /home/root
INSTALLS += target

因为我们的工程创建时,nuc972-qmake是没有的,所以我们要手动激活,并加入参数
-qws

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值