赞
踩
最近一个嵌入式Linux项目中需要使用到截屏,Find了一个不错的工具gsnap,但需要交叉编译移植后才能使用,记录下移植过程。
目标机gcc版本:arm-none-linux-gnueabihf-gcc gcc version 4.9.4
gsnap是根据Linux 系统的 FrameBuffer 机制,读取/dev/fb0文件里屏幕色彩的原始数据转化为可识别的jpg或者png文件,编译gsnap需依赖libjpeg、zlib、libpng源码。
下载:https://download.csdn.net/download/youshangpiaoyu/12827736
1.新建gsnap目录,解压依赖的源码
2.在gsnap目录下新建install目录用于安装编译后生成的文件
3.交叉编译
(1).编译jpeg,进入jpeg-9d目录:
依次执行
./configure --host=arm-none-linux-gnueabihf --prefix=/home/yh/gsnap/install/jpeg
make
make install
(2).编译zlib,进入zlib-1.2.11目录:
prefix=/home/yh/gsnap/install/zlib CC=arm-none-linux-gnueabihf-gcc ./configure
make
make install
(3).编译png,进入libpng-1.6.37目录:
拷贝makefile并更改为以下内容 执行 cp ./scripts/makefile.linux makefile
执行make前将pngpriv.h文件130行改为(不更改make通不过。报*** [pngtest] Error 1 )
# if defined(PNG_ARM_NEON) && (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \
make
make install
4.编译gsnap,进入gsnap目录,更改makefile 连接编译生成的相关文件
all:
#$(CC) -g gsnap.c -L/usr/lib -lpng -ljpeg -lz -lm -o gsnap
arm-none-linux-gnueabihf-gcc -g gsnap.c \
-L/home/yh/gsnap/install/png/lib \
-L/home/yh/gsnap/install/jpeg/lib \
-L/home/yh/gsnap/install/zlib/lib \
-I/home/yh/gsnap/install/png/include \
-I/home/yh/gsnap/install/jpeg/include \
-I/home/yh/gsnap/install/zlib/include \
-lpng -ljpeg -lz -lm -o gsnap
clean:
rm -f gsnap
执行make all
可以看到生成了gsnap可执行文件
5.验证
将gsnap拷贝到目标机器/usr/bin,执行截屏操作
如果缺少libpng16.so.16文件
将编译出来的../install/png/lib目录下libpng16.so.16.37文件重命名为libpng16.so.16拷贝到目标机usr/lib目录下即可
执行 gsnap radio.jpg /dev/fb0 可以看到生成了radio.jpg文件,截屏成功。
将radio.jpg拷贝到主机上,显示效果如下
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。