使用buildroot构建龙芯2K1000文件系统,并使用qt+OpenCV进行拍照,并使用dropbear搭建ssh服务_buildroot配置qt+opencv-程序员宅基地

技术标签: 嵌入式相关基础知识  

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

准备工作(下载buildroot)

  • https://buildroot.org/download.html
    进入目录,使用make menuconfig

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • Cpio 可以说是一种打包方式,它包括一个或多个成员文件的连接, 每个成员文件
    都包含一个头,后面还可以是头中所示的文件内容。存档的结尾由另一个描述名
    为 TRAILER 的(空)文件的头表示。
    在这里插入图片描述
  • 由于 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:

  • http://download.qt.io/archive/qt/

下载linux下的其他qt creator:

  • http://download.qt.io/snapshots/qtcreator/4.10/4.10.2/138/
    下载安装完成后,添加之前build-linux-sdk中的/bin/qmake。
    显示错误:
    在这里插入图片描述
    先添加定义编译器:
    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 进行测试。
在这里插入图片描述

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

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

准备步骤

工具下载: dropbear-2016.78.tar.bz2
在这里插入图片描述
地址:http://matt.ucc.asn.au/dropbear/releases/

编译zlib库。
  • 准备zlib库。
    在这里插入图片描述
  • 解压库并修改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.h>
    • 需要交叉编译zlib的库。参考准备过程步骤。
    • 3、explicit_bzero 、memset_s报错,在config,h中去掉宏定义HAVE_MEMSET_S或者HAVE_EXPLICIT_BZERO,重新make clean && make即可。
  • make scp

  • make install
    得到编译好的库:
    在这里插入图片描述

拷贝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远程登录
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37596943/article/details/102869279

智能推荐

UE4_常见动画节点学习_Two Bone IK双骨骼IK-程序员宅基地

文章浏览阅读889次,点赞20次,收藏9次。关节目标位置空间设为BCSBoneSpace时,用作关节目标位置的骨骼命名。执行器位置空间设为BCSBoneSpace时,用作执行器位置的骨骼命名。要应用IK解算器的骨骼命名。启用时,执行器(组件、父或骨骼)的旋转将应用到IK骨骼。肢体最大长度的比率,用于决定缩放骨骼的时间。在关节目标位置空间中指定位置关节目标的向量。XYZ组件在目标骨骼上的平移。XYZ组件在目标骨骼上的旋转。XYZ组件在目标骨骼上的缩放。XYZ组件在目标骨骼上的平移。XYZ组件在目标骨骼上的旋转。XYZ组件在目标骨骼上的缩放。

百练 4102 宠物小精灵之收服 【二维费用01背包】_宠物小精灵之收服 百练-程序员宅基地

文章浏览阅读1.2k次。传送门 // 题意: 有k个怪物, 告诉每个怪物捕捉它需要的精灵球和皮卡丘收到的伤害, 给定精灵球的一共的数量和皮卡丘总的体力值, 问最多可以捕捉到多少个怪物, 然后如果能捕捉到的怪物相同则要消耗的体力值尽量的小….思路: 很明显的二维背包费用的题, 加了一维费用那么dp数组同时加一维即可……捡起一个物品所需要付出两种代价, 所以dp[i][u][v] 代表捕捉前i个怪物用掉精灵球u个, 体..._宠物小精灵之收服 百练

stm32中断服务函数c语言,STM32中断数据回调函数接收处理-程序员宅基地

文章浏览阅读2k次。1.定义一个空的指针函数 指针函数的参数是uint8_t 类型chtypedef void (* usart_recv_callback)(uint8_t ch);2.声明这个类型usart_recv_callback usart1_recv_cb;3.串口配置时,一个形参为串口中断接收回调void Usart_Config(USART_TypeDef* USARTx, uint32_t bau..._stm32回调函数和中断服务函数

对比文件,生成类似github diff对比报告_github文件对比-程序员宅基地

文章浏览阅读794次。对比文件,生成github diff报告_github文件对比

Python 实现C、C++程序注释英文翻译插件_针对c语言注释进行翻译-程序员宅基地

文章浏览阅读760次。Python 实现C、C++程序注释英文翻译插件。3.此文缺少访问超时等待续翻译代码段,暂时没空添加。2.安装核心功能包translators。1.参数3个,源文件、目标文件、翻译模式。4.编写正则表达式分析文本内容。3.编写文本输入输出函数。6.Keil实践提示。_针对c语言注释进行翻译

环形子数组的最大和-程序员宅基地

文章浏览阅读418次,点赞10次,收藏7次。至此,我们可以使用以上方法求解出环形数组的最大子数组和。特别需要注意的是,本题要求子数组不能为空,我们需要在代码中做出相应的调整。第一种情况的求解方法与求解普通数组的最大子数组和方法完全相同,读者可以参考53号题目的题解:最大子序和。求解普通数组的最大子数组和是求解环形数组的最大子数组和问题的子集。从子数组 [3] 和 [3,-2,2] 都可以得到最大和 3。的最大前缀和,将它们相加更新答案。数组和枚举后缀的时间复杂度为。最多只能包含固定缓冲区。构成最大子数组和的子数组为。构成最大子数组和的子数组为。

随便推点

将眼动追踪加入Vive头显,Tobii Pro推出VR研究工具-程序员宅基地

文章浏览阅读668次。这款VR研究工具可以用于心理学、消费者行为和人类表现等方面,是低成本、高效率的解决方案。 最近,Tobii Pro推出一款新的研究工具,可用于沉浸式VR研究。这种沉浸式VR研究与传统的研究方式大相径庭,可广泛应用于各类研究。据了解,Tobii Pro VR集成方案基于Tobii的眼动追踪技术和HTC Vive头显,并结..._vive unity vr 眼动数据

软件开发常用名词中英文对照-程序员宅基地

文章浏览阅读543次。  abort 中止  abstract class 抽象类  accelerator 快捷键  accelerator mapping 快捷键映射  accelerator table 快捷键对应表  access modifier 访问修饰符  Access Pack 访问包  access specifier 访问说明符  access violation 访问冲突  accessibili..._implementation 开发人员 setup

2022 届大四学长实习心得、职场经验分享、转型思考_学长实习经验分享-程序员宅基地

文章浏览阅读9.2w次,点赞108次,收藏95次。一位大四学长的实习体验,职场建议,经验分享,转型思考。_学长实习经验分享

单片机编程语言——C语言(1)-程序员宅基地

文章浏览阅读2.3k次。C语言结构注释变量定义与赋值数据类型强制转换前言:我们都知道单片机要对其写指令、编程等就需要一种编程语言。在众多的编程语言中不可否认的是c语言是最适合成为单片机的编程语言的。我们在这里分享一下c语言的知识点。结构一般来说c语言的结构,一般都是包括若干个头文件(以#include" xxx ")和函数组合而成的。例:#include "stdio.h"int main(void){ printf("hello wold"); return 0;}在这里我们看到有两部分#include_单片机编程

Linux 网络命令知多少-程序员宅基地

文章浏览阅读326次。在一片漆黑的界面下,我们该如何查看和配置系统网卡、IP地址、路由等信息呢?最传统基本的网络命令,几乎所有旧的发行版都支持的配置命令:ifconfig查看系统的所有网卡及IP配置信息:ifconfig禁用网卡:ifconfig eth0 down,启用网卡:ifconfig eth0 up为网卡配置IP地址:ifconfig eth0 192.168.1.56 netmask 255.255.255.0Ifconfig命令的替代者,最新版本的linux发行版都支持:查看系统的所有...

论文笔记 | 语义解析相关论文_a syntactic neural model for general-purpose code -程序员宅基地

文章浏览阅读1.7k次。文章目录1. Language to Logical Form with Neural Attention2. Abstract Syntax Networks for Code Generation and Semantic Parsing3. A Syntactic Neural Model for General-Purpose Code Generation4. Tree-structured Decoding with Doubly-recurrent Neural Network5. Seman_a syntactic neural model for general-purpose code generation,