使用buildroot构建龙芯2K1000文件系统,并使用qt+OpenCV进行拍照,并使用dropbear搭建ssh服务
使用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-stripCPPFLAGS=-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/dropbearcd /etc/dropbeardropbearkey -t rsa -f dropbear_rsa_host_keydropbearkey -t dss -f dropbear_dss_host_keyln -s /bin/dbclient /bin/sshln -s /lib/libz.so.1.2.8 /lib/libz.so.1ln -s /lib/libutil-2.20-2014.11.so /lib/libutil.so.1ln -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远程登录
使用buildroot构建龙芯2K1000文件系统,并使用qt+OpenCV进行拍照,并使用dropbear搭建ssh服务相关推荐
- 【龙芯2K1000】交叉编译QT库
目录 前言 1.下载QT源码 2.安装龙芯交叉编译工具链 3.源码编译QT 4.结束 前言 本文旨在讲解如何使用龙芯的交叉编译工具链交叉编译出能在龙芯2K1000上使用的QT库,并远程调试编译应用. ...
- 龙芯2K1000使用nfs挂载文件系统进行使用
龙芯2K1000使用nfs挂载文件系统进行使用 在使用龙芯2K1000板子进行开发时,最方便的方式就是通过网络挂载文件系统NFS进行程序开发,这样能大大提高开发效率. 准备: 在龙芯2K上使用nfs挂 ...
- 4.龙芯2k1000 系统制作及安装
4.龙芯2k1000 系统制作及安装 文章目录 4.龙芯2k1000 系统制作及安装 (一).制作系统启动U盘 (二).操作系统拷贝 准备材料: 系统内核文件vmlinuz buildroot根文件系 ...
- 基于龙芯 2K1000 的嵌入式 Linux 系统移植和驱动程序设计(二)
第 3 章 嵌入式软件系统移植 本课题中嵌入式系统正常工作的前提是嵌入式软件系统完整且能正常工作, 以便为之后的软件开发提供一个能够正常工作的平台.引导程序 PMON 需要完成 内核引导,嵌入式 Li ...
- 龙芯2K1000开发板资料1.2版更新了
叮,今日更新已送达. 本次指南更新新增了pmon下操作GPIO章节和pmon下Ejtag使用章节,感兴趣的快来看看吧~ 更新重点 1.新增了9.6 pmon下操作GPIO章节 2.新增了9.7 pmo ...
- 迅为龙芯2K1000开发板国产处理器操作系统
1.硬件配置 国产龙芯处理器,双核64位系统,板载2GDDR3内存,流畅运行Busybox.Buildroot.Loognix.QT5.12 系统! 2.接口全 板载4路USB HOST.2路千兆以太 ...
- 迅为龙芯2K1000开发板编译Linux内核
loongnix操是国产操作系统,带有非常友好的人机交互界面,可以运行在LS2K1000上,本章我们就一起来看下如何给开发板安装loongnix国产操作系统. 1.下载系统安装镜像 Loongnix系 ...
- 基于龙芯2K1000适配WIFI模块(型号:Intel 8265NGW)
硬件平台:龙芯2K1000 evb开发板 + Intel 8265NGW 开发环境:Ubuntu16.04+gcc-4.9.3-64-gnu 平台环境1:PMON+linux3.10+loongnix ...
- 迅为龙芯2K1000开发板PMON开发之配置nand flash之配置pmon
pmon 支持俩种接口类型的 nand flash,一个是 nand 控制器接口,一个是 spi 接口.龙芯核心板上板载了一个 nand 控制器接口的 flash. 1 配置 pmon 首先我们需要在 ...
最新文章
- CSS浮动元素特点有什么
- 【Java】排序算法 之 【快速排序】 总结
- python--练习--将字符串转成列表
- python基础实验报告答案_Python基础(上)实验报告
- 最新安卓系统细节曝光:后盖手势控制、浮雕式UI、隐私保护.....本月更新!
- 爱因斯坦:量子物理与抽象数学(广义)
- 阿里巴巴Java开发手册建议创建HashMap时设置初始化容量,但是多少合适呢?
- 2017年闰秒linux_2017年Linux专业人员的4个热门技能
- 中国 AI 的“黄埔军校”?MSRA 被曝停招“国防七子”及北邮学生
- 通过内网穿透 将本地端口 使其外网可以进行访问 使用花生壳内网穿透 网站访问
- 调用Google翻译API实现文本翻译
- HiveSQL和普通SQL的区别
- Delphi 制作股票分时图
- python获取当前工作路径
- 小牛的net程序开发之路
- 网络安全-点击劫持(ClickJacking)的原理、攻击及防御
- 射频和无线技术入门--传统技术--7
- 神经复杂系统前沿:关于认知大脑的两种观念
- 【全网最全面】SourceTree使用教程详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决,提交PR)...
- 大数据要学什么?看看这份大数据课程大纲
热门文章
- python设计tcp数据包协议类
- 开源金庸群侠传3D重制版
- linux 找到安装的软件包,如何在 Linux 中列出可用的软件包组
- IIS 收到了请求;但在处理请求过程中出现内部错误。此错误的根本原因取决于处理该请求的是哪一个模块以及出现此错误时工作进程中出现了何种情况。
- 资金表实现过程方案二:资金表与冻结表分离(三)
- python3 is not recognized
- 【游戏教程】《星界边境》游戏2D角色分析(二)跳跃、移动动作逐帧拆分
- tring.prototype.replaceAll called with a non-global RegExp argument
- 什么是SQL?3个字讲明白
- Data Guard原理