使用buildroot构建龙芯2K1000文件系统,并使用qt+OpenCV进行拍照,并使用dropbear搭建ssh服务

简介: 使用buildroot构建龙芯2K1000文件系统,并使用qt+OpenCV进行拍照,并使用dropbear搭建ssh服务

使用buildroot构建龙芯2K1000文件系统

准备工作(下载buildroot)

依次进入各级菜单目录,进行如下配置:

20191102104152331.png

20191102104210858.png

20191102104224618.png

  • Cpio 可以说是一种打包方式,它包括一个或多个成员文件的连接, 每个成员文件
  • 都包含一个头,后面还可以是头中所示的文件内容。存档的结尾由另一个描述名为 TRAILER 的(空)文件的头表示。

20191102104307623.png

  • 由于 Qt 5.11 不再提供字体文件,所以我们还要在 buildroot 勾选上字体。
  • 接下来就执行 make && make sdk
  • 错误提示:
In file included from /home/ww/buildroot-2019.02.6/output/build/freetype-2.9.1/src/sfnt/sfnt.c:22:0:
/home/ww/buildroot-2019.02.6/output/build/freetype-2.9.1/src/sfnt/pngshim.c: In function ‘premultiply_data’:
/home/ww/buildroot-2019.02.6/output/build/freetype-2.9.1/src/sfnt/pngshim.c:54:3: internal compiler error: 段错误


  • 该错误是由于freetype字库导致的,不知道如何解决,只能暂时去掉编译该项,后期如果需要用到字库,再单独编译即可。判断应该与编译器有关。
  • 测试验证后,确实是编译器的关系,buildroot提供使用qt5,但是qt5会自动选用freetype,此处有bug,自动编译的freetype无法顺利编译通过,是编译链接选项的问题。所以暂时去掉qt5。可以继续编译。这一问题龙芯上没有发现,因为龙芯使用GCC版本为4.9。只有版本低于4.8的才可能会有该问题出现。


搭建SDK编译环境


可以看见输出文件大了很多(因为里面包含了支持 OpenCV 和 QT 的库文件) ,到这里支 持 QT 和 OpenCV 文件系统就做好了 ,下面我们 准备把这个文件系统(rootfs.cpio.gz) 编译到内核里。 而 mips64el-buildroot-linux-gnu_sdk-buildroot.tar.gz文件是包含了编译过程中生成的目标平台的 lib 库和头文件等,后面配置 QT 的构建套件时会使用这个文件, 先执行以下命令安装 SDK 到/opt 目录

cp output/images/mips64el-buildroot-linux-gnu_sdk-buildroot.tar.gz /opt
cd /opt
tar -vxf mips64el-buildroot-linux-gnu_sdk-buildroot.tar.gz
cd mips64el-buildroot-linux-gnu_sdk-buildroot
./ relocate-sdk.sh

搭建QT+OpenCV开放环境

安装Qt Creator4.10.2,搭建开放环境。

如果需要linux下的qt:


下载linux下的其他qt creator:


下载安装完成后,添加之前build-linux-sdk中的/bin/qmake。

显示错误:

20191102112730328.png

先添加定义编译器:

mips-linux-generic-elf-32bit

在移植后的系统下运行qt程序问题解决

在板子上运行qt程序显示:qt.qpa.plugin: Could not find thi Qt platyform plugin “eglfs” in " ", available platform plugins are : linuxfb, minimal, offscreen, vmc.

  • 该问题是没有初始化qt运行环境,在/etc/profile文件中添加初始化qt环境参数:
export QTEDIR=/usr/lib/qt
export LD_LIBRARY_PATH=/usr/lib/:/usr/lib64:$LD_LIBRARY_PATH
export QT_QPA_GENERIC_PLUGINS=tslib
export QT_QPA_FONTDIR=/usr/share/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTEDIR/plugins
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=1024x600:mmSize=1024x600:offset=0x0:tty=/dev/tty0
export QT_QPA_FB_TSLIB=1

添加后重启系统,执行 ./${程序名} -qws 进行测试。

20191105111402235.png

  • 其中exit按键响应需要调用模块自带的close();
void Dialog::on_OpenImageBtn_2_clicked()
{
    this->close();
}


交叉编译dropbear使能SSH,在龙芯上搭建ssh服务。

准备步骤

工具下载: dropbear-2016.78.tar.bz2

20191105111917991.png

地址:http://matt.ucc.asn.au/dropbear/releases/

编译zlib库。

  • 准备zlib库。
  • 20191105113614671.png
  • 解压库并修改Makefile。tar -xvf zlib-1.2.11.tar.gz
tar -xvf zlib-1.2.11.tar.gz
./configure --prefix=/root/loongson/source/dropbear/


  • 修改Makefile
#CC=gcc
CC=/opt/freescale/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-gcc
LDSHARED=/opt/freescale/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
#AR=ar
AR=/opt/freescale/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-ar
#RANLIB=ranlib
RANLIB=/opt/freescale/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-ranlib


  • 编译安装:
make
make install


  • 在编译dropbear时需要修改连接路径。

开始编译


编译dropbeear:

  • tar -xvf dropbear-2019.78.tar.bz2

进入dropbear目录,配置dropbear

cd dropbear-2016.74


./configure --prefix=/home/freescale/test/build/dropbear


修改生成的Makefile

CC=/opt/opt/gcc-4.9.3-64-gnu/bin/mips64el-linux-gcc(根据所使用的交叉工具链修改)
AR=/opt/opt/gcc-4.9.3-64-gnu/bin/mips64el-linux-ar
RANLIB=/opt/opt/gcc-4.9.3-64-gnu/bin/mips64el-linux-ranlib
STRIP=/opt/opt/gcc-4.9.3-64-gnu/bin/mips64el-linux-strip
CPPFLAGS=-I/root/loongson/source/dropbear/include
LDFLAGS=-L/root/loongson/source/dropbear/build/lib -Wl,-pie -Wl,-z,now -Wl,-z,relro



编译并安装


  • make


报错:

1、mips64el-linux-gcc: error: unrecognized command line option ‘-mfunction-return=thunk’

mips64el-linux-gcc: error: unrecognized command line option ‘-mindirect-branch=thunk’

去掉编译选择中的这两个选项。

2、includes.h:108:18: fatal error: zlib.h: No such file or directory

#include

需要交叉编译zlib的库。参考准备过程步骤。

3、explicit_bzero 、memset_s报错,在config,h中去掉宏定义HAVE_MEMSET_S或者HAVE_EXPLICIT_BZERO,重新make clean && make即可。

  • make scp


  • make install

得到编译好的库:

20191105120734302.png

拷贝scp到安装目录

cp scp /root/loongson/source/dropbear/build/dropbear/bin


strip所有的可执行文件

aarch64-fsl-linux-strip /home/freescale/test/build/dropbear/bin/*
aarch64-fsl-linux-strip /home/freescale/test/build/dropbear/sbin/*

把所有bin目录和sbin目录文件拷贝到精简文件系统对应的bin和sbin目录中,拷贝上述涉及到的lib库到精简文件系统的lib目录,创建dropbear配置目录,并生成密钥

mkdir /etc/dropbear
cd /etc/dropbear
dropbearkey -t rsa -f dropbear_rsa_host_key
dropbearkey -t dss -f dropbear_dss_host_key
ln -s /bin/dbclient /bin/ssh
ln -s /lib/libz.so.1.2.8 /lib/libz.so.1
ln -s /lib/libutil-2.20-2014.11.so /lib/libutil.so.1
ln -s /lib/libcrypt-2.20-2014.11.so /lib/libcrypt.so.1
dropbear即为服务端,dbclient即为客户端,添加系统启动服务
vi /etc/init.d/rcS
添加
/usr/sbin/dropbear
到此处dropbear准备工作已经完毕,重启系统后,用PC通过ssh远程登录



相关文章
|
算法 计算机视觉
基于qt的opencv实时图像处理框架FastCvLearn实战
本文介绍了一个基于Qt的OpenCV实时图像处理框架FastCvLearn,通过手撕代码的方式详细讲解了如何实现实时人脸马赛克等功能,并提供了结果展示和基础知识回顾。
666 7
基于qt的opencv实时图像处理框架FastCvLearn实战
|
3月前
|
Linux 网络安全 Docker
盘古栈云,创建带ssh服务的linux容器
创建带ssh服务的linux容器
336 146
|
4月前
|
Ubuntu 网络安全 数据安全/隐私保护
搭建SSH服务于RK3399平台上的Ubuntu 18.04,实现远程连接
以上步骤涵盖从安 装 到配制再至实际使 用户建立Ssh 连接所需知识点 。务必注意,在对外提供Ssh 访问
220 2
|
7月前
|
应用服务中间件 网络安全 数据安全/隐私保护
网关服务器配置指南:实现自动DHCP地址分配、HTTP服务和SSH无密码登录。
哇哈哈,道具都准备好了,咱们的魔术秀就要开始了。现在,你的网关服务器已经魔法满满,自动分配IP,提供网页服务,SSH登录如入无人之境。而整个世界,只会知道效果,不会知道是你在幕后操控一切。这就是真正的数字世界魔法师,随手拈来,手到擒来。
391 14
|
文字识别 计算机视觉 开发者
基于QT的OCR和opencv融合框架FastOCRLearn实战
本文介绍了在Qt环境下结合OpenCV库构建OCR识别系统的实战方法,通过FastOCRLearn项目,读者可以学习Tesseract OCR的编译配置和在Windows平台下的实践步骤,文章提供了技术资源链接,帮助开发者理解并实现OCR技术。
817 9
基于QT的OCR和opencv融合框架FastOCRLearn实战
|
安全 Linux Shell
ssh 远程控制服务
SSH(Secure Shell)是一种用于远程登录的安全协议,相比FTP和Telnet,它提供了更高的安全性,避免了明文传输带来的风险。要使用SSH远程管理Linux系统,需要配置sshd服务。本文介绍了如何克隆Linux服务器、修改网络配置,并通过SSH连接两台服务器,最后在目标服务器上创建一个日志文件。
293 5
|
计算机视觉
基于QT的opencv插件框架qtCvFrameLearn实战
这篇文章详细介绍了如何基于Qt框架开发一个名为qtCvFrameLearn的OpenCV插件,包括项目配置、插件加载、Qt与OpenCV图像转换,以及通过各个插件学习OpenCV函数的使用,如仿射变换、卡通效果、腐蚀、旋转和锐化等。
349 10
|
机器学习/深度学习 Java 计算机视觉
opencv4.5.5+qt5.15.2+vtk9.1+mingw81_64编译记录
本文记录了使用mingw81_64编译OpenCV 4.5.5、Qt 5.15.2、VTK 9.1的详细过程,包括编译结果截图、编译步骤、遇到的问题及其解决方案,以及相关参考链接。文中还提到了如何编译boost源码为静态库,并提供了测试代码示例。
754 0
opencv4.5.5+qt5.15.2+vtk9.1+mingw81_64编译记录
|
监控 安全 Ubuntu
在Linux中,如何进行SSH服务配置?
在Linux中,如何进行SSH服务配置?
|
计算机视觉
使用QT显示OpenCV读取的图片
使用QT显示OpenCV读取的图片
388 1

推荐镜像

更多
  • qt