树莓派3B+ qwt-6.1.3的交叉编译环境搭建指导

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zz531987464/article/details/83786035

该文档同样适用于其他的嵌入式平台的qwt的移植

qwt源码下载地址: https://sourceforge.net/projects/qwt/files/qwt/

1.将下载的qwt-6.1.3.tar.bz2包解压,进入到解压后的文件夹qwt-6.1.3中

2.然后执行qmake . 

(注意这里的qmake是你所想使用的平台的下的qmake,如果想在板子上的QT应用使用qwt,则qmake应该为交叉编译下的qmake;若是要在ubuntu中QT应用使用qwt,则qmake应该为桌面版本下的qmake

我的树莓派交叉编译的qmake路径为:/home/galaxy/raspi/qt5/bin/qmake

我的主机ubuntu的qmake的路径为:/opt/Qt5.9.6/5.9.6/gcc_64/bin/qmake)

这里我需要在树莓派的QT上使用qwt绘制曲线,所以执行

/home/galaxy/raspi/qt5/bin/qmake .

3. make

这里make时会报错,显示Project ERROR: Unknown module(s) in QT: designer(ubuntu版本的qwt不会出现错误)

这里我们在编译之前是需要对qwt源码工程进行配置

3.1 打开解压过后的qwt-6.1.3源文件目录中的qwtconfig.pri文件

    a.22行 QWT_INSTALL_PREFIX    = /usr/local/qwt-$$QWT_VERSION (表示qwt相关库和头文件的安装路径),这里修改为      QWT_INSTALL_PREFIX    = /home/galaxy/raspi/sysroot/usr/local/qwt-$$QWT_VERSION (和前面文章的QT安装路径一致)

    b.122行 QWT_CONFIG     += QwtDesigner 给注释掉,不编译Designer插件,这是因为Designer插件只能在主机上使用,所以编译会报错,但是我们是需要designer的控件的,暂时先注释掉,编译通过了再说,待会会给出解决方法。

    c.将144行 QWT_CONFIG     += QwtExamples 注释取消掉,用于编译生成相关的测试例子,我们后面可以直接运行这些例子验证qwt是否安装ok。

    c. 重新make,最终能够编译通过啦

4. sudo make install ,最终会在/home/galaxy/raspi/sysroot/usr/local/目录下生成一个qwt-6.1.3文件夹,该文件夹下包含有相关的库和头文件,但是没有plugins文件夹,我们是需要plugins/designer文件夹里面的libqwt_designer_plugin.so用于widget.ui中添加控件的,前面因为编译不通过的原因所以我们直接注释掉了QWT_CONFIG     += QwtDesigner。没关系,接下来我们可以使用桌面版的qwt编译结果中的plugins/designer/libqwt_designer_plugin.so库,这么做也是可以的。

4.1 再次拷贝一份qwt-6.1.3.tar.bz2的源码包到用户主目录并解压

 /opt/Qt5.9.6/5.9.6/gcc_64/bin/qmake .

make (这里就直接默认的配置好了,主要是想利用它生成的libqwt_designer_plugin.so这个库)

sudo make install 

这边编译的qwt为主机ubuntu上QT使用的版本,qwt默认安装目录为 /usr/loca/qwt-6.1.3,进入其中,发现比树莓派版本的qwt多了一个plugins文件夹,这个里面就是我们想要的东西。

4.2 将plugins/designer目录下的libqwt_designer_plugin.so文件拷贝到QT安装目录下的两个designed文件夹中

sudo cp /usr/local/qwt-6.1.3/plugins/designer/libqwt_designer_plugin.so     /opt/Qt5.9.6/5.9.6/gcc_64/plugins/designer

sudo cp /usr/local/qwt-6.1.3/plugins/designer/libqwt_designer_plugin.so  /opt/Qt5.9.6/Tools/QtCreator/lib/Qt/plugins/designer

将拷贝后的两个文件添加权限,不添加权限的话,打开Qtcreator的widget.ui会找不到qwt的插件

 sudo chmod 775 libqwt_designer_plugin.so

5 重新启动QtCreator,新建一个widget工程,编译套件选择我们的树莓派的编译套件,不知道的可以参考前面的博客。新建完成后,打开widget.ui文件,在widget.ui的左侧控件栏中就会出现qwt的一些控件了,随便拖两个qwt的控件到ui上。

在新工程untitled.pro中添加

INCLUDEPATH += /home/galaxy/raspi/sysroot/usr/local/qwt-6.1.3/include
LIBS += -L/home/galaxy/raspi/sysroot/usr/local/qwt-6.1.3/lib -lqwt

执行构建,构建完成后会生成一个untitled的bin程序

6. 现在我们只要将该bin程序以及前面的/home/galaxy/raspi/sysroot/usr/local/qwt-6.1.3拷贝到树莓派中即可。这里使用rsync将该文件夹同步到树莓派中。

首先在树莓派中新建qwt-6.1.3的文件夹

sudo mkdir /usr/local/qwt-6.1.3

sudo chown pi:pi /usr/local/qwt-6.1.3

然后在pc端执行rsync命令同步qwt-6.1.3文件夹到新建的树莓派的qwt-6.1.3文件夹中

cd /home/galaxy/raspi/sysroot/usr/local

rsync -avz qwt-6.1.3 [email protected]:/usr/local

同步拷贝完成后,ssh到树莓派中,将新共享库目录加入到共享库配置文件/etc/ld.so.conf中,/etc/ld.so.conf添加一行/usr/local/qwt-6.1.3/lib

include /etc/ld.so.conf.d/*.conf
/usr/local/qwt-6.1.3/lib

退出编译执行 sudo ldconfig

接着再将刚才生成的bin文件拷贝到树莓派中

sudo scp untitled [email protected]:/home/pi

最终执行: ./untitled,可以看到 qwt能够使用啦,运行结果如下:

7.接下来我们还可以将前面生成的examples拷贝到树莓派中运行看看

sudo scp /home/galaxy/raspi/qwt-6.1.3/examples/bin [email protected]:/home/pi/

运行qwt中examples的cpuplot bin程序,可以看到树莓派cpu相关信息

好了,qwt如何使用就说这么多了,其他的嵌入式平台移植方法基本上都一样的,大家可以自行参考设置啦。。。

猜你喜欢

转载自blog.csdn.net/zz531987464/article/details/83786035
今日推荐