IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 嵌入式截屏工具-gsnap移植 arm平台 -> 正文阅读

[嵌入式]嵌入式截屏工具-gsnap移植 arm平台

前言

由于工作的需要,需要交叉编译一个嵌入式截屏工具,通过网上的查询,用的比较多的就是gsnap。网上也有比较多的资料,参考里的资料基本就是我参考的一些资料了,写的还是不错的,但有些可能会有一些问题,所以,我记录一下我自己实测的情况。

正文

原理

  1. 前提条件:
    嵌入式机器要支持/dev/fb0这个设备节点。不然,这个工具基本就使用不了了。

  2. 原理:
    由于 Linux 系统的 FrameBuffer 机制,把屏幕上的每个点映射成一段线性内存空间,这样,程序就可以通过改变这段内存的值来改变屏幕上某一点的颜色。如果我们想把当前的显示内容保存起来,可能会想到如下命令:

cat /dev/fb0 > fb_data.raw

反过来,可以将这些数据回显到 framebuffer 中:

cat fb_data.raw > /dev/fb0

但是,用这用方法保存起来的数据是原始数据,只有专用软件才能打开,并且大小固定(如:8MB)。基于这些原因,我们找到一个不错的工具——gsnap,这个工具可以将 framebuffer 的数据保存为图片(png或jpeg格式)。

环境

  1. 交叉编译的主机为Ubuntu 16.04

  2. 使用的交叉编译器为: arm-linux-gnueabihf-gcc
    交叉编译器的下载地址为: https://blog.51cto.com/u_15127589/4102404
    我这边直接选择的版本就是最新的:
    安装方式就直接在root下面执行: sudo apt install gcc-arm-linux-gnueabihf

  3. 测试方式:arm-linux-gnueabihf-gcc -v
    在这里插入图片描述

  4. gsanp的源码以及一些依赖库的链接如下:
    CSDN资料链接
    蓝奏云资源链接

详细流程

  1. 首先,进入那个资源文件夹中可以看到:
    在这里插入图片描述
    建议你们是把出.tar…gz的其他文件都先删掉。因为那些是我解压且修改后的文件。你要是用那些,有可能自己的编译器有问题,都没有发现。

  2. 首先,在这个目录下创建一个install的目录,来存放生成的依赖库。

  3. 然后,将所有的.tar.gz都解压在当前目录即可。命令: tar -zxvf *****.tar.gz

  4. 各个依赖库的交叉编译次序:jpeg --> zlib --> libpng --> gsnap。

  5. 先进行libjpeg编译,在ubuntu中执行以下命令,进行交叉编译:

# cd /work/gsnap/gsnap_build_all_src/jpeg-9d
# export CC=arm-linux-gnueabihf-gcc
# ./configure --host=arm-linux-gnueabihf --prefix=/work/gsnap/gsnap_build_all_src/install/jpeg
# make -j4
# make install
  1. 编译成功后,在目录下生成;
    在这里插入图片描述
  2. 由于zlib是libpng的依赖,因此在交叉编译libpng之前,必须首先编译zlib。在ubuntu中执行以下命令,进行zlib的交叉编译:
# cd /work/gsnap/gsnap_build_all_src/zlib-1.2.11
# export CC=arm-linux-gnueabihf-gcc
# ./configure --prefix=/work/gsnap/gsnap_build_all_src/install/zlib
# make -j4
# make install
  1. 交叉编译zlib成功后,接着就可以编译libpng了。与上述的两个库编译方式不同,由于libpng源码里面提供了Linux平台的Makefile文件,因此,可以直接修改Makefile然后完成编译工作。执行以下命令,进入libpng源码目录,然后进行Makefile复制。
# cd /work/gsnap/gsnap_build_all_src/libpng-1.6.37
# cp scripts/makefile.linux  Makefile  -a

然后,makefile相应更改一下:
在这里插入图片描述
然后,执行

# make -j4
# make install
  1. 接下来,所有的依赖库都放在install下面了,我们可以看下;
    在这里插入图片描述
  2. 接下来进入gsnap的源码,去编译编码.

a. 首先,我们进入后,修改一下Makefile。Makefile修改成这样;

all:
        #$(CC) -g gsnap.c -L/usr/lib -lpng -ljpeg -lz -lm -o gsnap
        arm-linux-gnueabihf-gcc  -g gsnap.c \
        -L /work/gsnap/gsnap_build_all_src/install/png/lib \
        -L /work/gsnap/gsnap_build_all_src/install/jpeg/lib \
        -L /work/gsnap/gsnap_build_all_src/install/zlib/lib \
        -I /work/gsnap/gsnap_build_all_src/install/png/include \
        -I /work/gsnap/gsnap_build_all_src/install/jpeg/include \
        -I /work/gsnap/gsnap_build_all_src/install/zlib/include \
        -lpng -ljpeg -lz -lm -o gsnap
clean:
        rm -f gsnap

里面的路径注意要相对应改成你所当前环境下的。

b. 执行make all,执行完后,我们就可以看到当前文件夹下生成一个gsnap的可执行文件:

在这里插入图片描述

  1. 接下来,将这个gsnap的可执行文件拷贝到:/bin下面。

  2. 将一些依赖库拷贝到\lib目录下面。

  3. 执行以下命令,可以进行屏幕截图:gsnap fb.jpg /dev/fb0
    执行完后,你就可以在/bin的目录下找到一个fb.jpg,将其拷贝出来,就可以进行显示了。

在这里插入图片描述

参考

  1. 嵌入式截屏工具-gsnap移植
  2. 嵌入式Linux开发环境搭建-(7)嵌入式Linux开发板截屏工具gsnap移植
  3. 嵌入式Linux截图工具gsnap移植与分析

环境相关:
4. ARM-Linux开发 arm-none-Linux-gnueabi-gcc下载安装
5. make:arm-linux-gnueabihf-gcc:command not found 问题解决
6. arm-linux-gnueabihf编译工具链安装

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-27 11:29:12  更:2022-04-27 11:29:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:32:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码