CentOS安装scrot记

似乎感觉这个事件没什么好写的,但我还是记一下。

CentOS下没有个很爽的截图软件,网上学友们都推荐scrot这个。

提示:在Gnome下,可以用 gnome-screenshot 命令行进截屏,详细使用方法请 man。安装scrot实在太折腾了!

1. 安装

scrot的源码在:http://freecode.com/projects/scrot

下载下来安装,可能会遇到一个库:giblib,而giblib又依赖imlib2。在这个freecode.com网上都可以下载。怎么我安装,我不再多说了,莫非都是:

tar xzvf xxxx.tar.gz
cd xxxx
./configure && make
sudo make install

你懂的,在./configure过程中缺什么就去找什么。

1.1 安装 libX11

在 make 的时候,出现以下错误:

In file included from main.c:26:
scrot.h:29:22: error: X11/Xlib.h: No such file or directory

在网上查得原因,需要安装:libX11-devel

sudo yum install libX11-devel

这个错误就过了。

1.2 安装lmlib库

不过又出现了这个错误:

In file included from /usr/local/include/giblib/giblib.h:30,
                 from scrot.h:51,
                 from main.c:26:
/usr/local/include/giblib/gib_imlib.h:32:20: error: Imlib2.h: No such file or directory
这是 imlib 库没有安装的原因。

下载库 imlib2-1.4.4 进行安装,make 时报错:

1.2.1 缺libXext

api.c:5:34: error: X11/extensions/shape.h: No such file or directory
In file included from api.c:23:
ximage.h:5:33: error: X11/extensions/XShm.h: No such file or directory
In file included from api.c:23:

sudo yum install libXext-devel

还有错误:api.c:30:22: error: ft2build.h: No such file or directory

1.2.2 缺freetype

sudo yum install freetype-devel

报错:/usr/include/ft2build.h:56:38: error: freetype/config/ftheader.h: No such file or directory

需要源码安装 freetype 才行。从 http://www.freetype.org/download.html 下载源码包进行安装。

再 make,报错:api.c:5416: fatal error: opening dependency file .deps/api.Tpo: Permission denied

缺权限。那就 sudo make

1.2.3 链接时报错:/usr/bin/ld: cannot find -lpng12

$ locate libpng12.so
/usr/lib/libpng12.so.0
/usr/lib/libpng12.so.0.49.0

发现 /usr/lib/ 下有两个类似的库,但就是没有 libpng12.so,将 libpng12.so.0 文件链接到 /usr/lib/libpng12.so 上。

sudo ln /usr/lib/libpng12.so.0 /usr/lib/libpng12.so

再 make,报错:loader_png.c:2:17: error: png.h: No such file or directory

1.2.4 安装 libpng 库

http://libpng.sourceforge.net/index.html 下载后安装。

再 make,报错:

loader_png.c: In function ‘load’:
loader_png.c:61: error: dereferencing pointer to incomplete type
loader_png.c: In function ‘save’:
loader_png.c:268: error: dereferencing pointer to incomplete type

1.2.5 png_structp未完全定义问题

打开 loader_png.c 文件,发现确定引用到了 png_structp 的类型。

        if (setjmp(png_ptr->jmpbuf))  /* 笔者:这里引用到了 png_ptr 的内部成员 */
          {
             png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
             fclose(f);
             return 0;
          }

png_ptr 就是 png_structp 类型的。在这个文件里没有定义 png_structp 的类型,头文件也只包含了 png.h

用 locate png.h 找到 /usr/local/include/png.h,打开文件发现:

typedef struct png_struct_def png_struct;
typedef png_struct * png_structp;

文件中没有定义 png_struct_def 结构体。找源文件中去找找看。

在源码的 ./pngstruct.h 文件里有定义。但 png.h 文件没有 #include "pngstruct.h",所以报错。

笔者估计png库的设计都并没有打算将 png_struct_def 的结构体的内部成员暴露出来,所以在 png.h 文件里没有定义,只是指定了指针与访问函数。没想到在 png_loader.c 里破了这个规距。

既然如此,那么就好办了。将 pngstruct.h 文件copy到 /usr/local/include/ 目录下去。再在 png_loader.c 文件里 #include <pngstruct.h> 就行了。
再 make,报错:
loader_png.c: In function ‘load’:
loader_png.c:62: error: ‘png_struct’ has no member named ‘jmpbuf’
loader_png.c: In function ‘save’:
loader_png.c:269: error: ‘png_struct’ has no member named ‘jmpbuf’

1.2.6 png_struct_def结构中没有jmpbuf问题

说明刚刚的修改生效了,只是 png_struct_def 中确实没有 jmpbuf 这个字段。这很可能是版本不一致导致的。
在本人 libpng 的版本中,没有 jmpbuf 这个字段,但是提供了一个从 png_struct_def 中获取 jmpbuf 的函数接口

jmp_buf png_jmpbuf( png_structp *png_ptr);

用 png_jmpbuf(png_ptr) 来替代对 png_ptr->jmpbuff 的直接访问。

再 make,这次通过了!

好!imlib2-1.4.4 是编译通过了。再回来 make scrot。

很顺利,也通过了!

2. 运行时libgiblib.so动态库问题

全部安装完成功了之后,运行scrot时出现一个错误:
scrot: error while loading shared libraries: libgiblib.so.1: cannot open shared object file: No such file or directory

说是libgiblib.so.1打不开。解决的方法是:

(1)找到这个libgiblib.so.1文件。

$ find /usr -name libgiblib.so.1  找到这个文件在位置
/usr/local/lib/libgiblib.so.1
$ cat /etc/ld.so.conf  查看当前库加载路径,看有没有把这个文件包含进去
include ld.so.conf.d/*.conf
$ echo "/usr/local/lib" >> /etc/ld.so.conf 添加库路径
$ ldconfig  加载库文件后scrot正常使用来
$ scrot --help 查看scrot的帮助信息
Usage : scrot [OPTIONS]... [FILE]
  Where FILE is the target file for the screenshot.
  If FILE is not specified, a date-stamped file will be dropped in the
  current directory.
  See man scrot for more details
  -h, --help                display this help and exit
  -v, --version             output version information and exit
  -b, --border              When selecting
……

好了,现在可以使用了。

3. 使用方法

下面是我摘抄一些scrot的使用方法:http://blog.csdn.net/luonanqin/article/details/7770554

[一般用法] 使用 scrot 可以抓取整个桌面、某个指定的窗口、以及选择的矩形区域。

  抓取桌面:scrot desktop.png,该命令将当前的整个桌面抓取下来,并保存为 desktop.png 文件。可以在当前的目录中找到此图像文件。
抓取窗口:scrot -bs window.png,选项 b 使 scrot 在抓取窗口时一同将外边框抓取下来,而 s 选项则让用户选择所要抓取的是何窗口。
抓取区域:scrot -s rectangle.png,在执行此命令后,使用鼠标拖曳的矩形区域将被 scrot 抓取下来,并保存为 rectangle.png 文件。

[高级用法] 对于普通的抓取,使用 scrot 的基础便足以应付了。但在某些特殊情况之下,使用 scrot 抓取图像需要讲究一些技巧。
延时抓取:scrot -cd 10 menu.png,此命令中的 d 选项用于延时抓取图像,其后的 10 代表延时 10 秒;前面的选项 c 显示倒计时。在抓取菜单或是命令提示时,该技巧将充分展示其魔力。
生成缩图:scrot -t 50% thumb.png,这个命令在抓取图像的同时生成该图像的缩略图。选项 t 将打开此功能,其后的 50% 为原图的缩放百分比。
更改品质:scrot -q 70 quality.jpg,此命令中的 q 选项用于更改所抓图像的品质,其数值介于 1-100 之间,默认为 75。数值越大,意味着图像品质越高;同时,图像的压缩率也就越低,占用空间越大。
操作抓图:scrot action.png -e ‘mv $f ~/images/’,该命令将抓取的图像移动到 ~/images/ 目录。显然,操作图像的功能由 e 选项开启,其中的 $f 代表原图的路径/文件名。

  以上示例皆指定了需要保存的抓图的文件名称。实际上,如果不指定名称,那么 scrot 在抓取图像后会自动使用当前的日期时间、宽度高度的组合来生成文件名称。如:2012-07-21-154232_238x148_scrot.png

  然而这样还是不太方便。可以新建一个文件,如screenshot
touch screenshot
vim screenshot(如果没有安装vim,可以执行sudo apt-get install vim进行安装)
输入 scrot -s -e ‘mv $f ~/screenshots’(注:mv $f ~/screenshots命令两边为单引号)
保存退出vim,然后 chmod u+x screenshot

  这样就可以通过运行screenshot文件来执行scrot了。或者可以通过建立软链接来使用scrot。比如:在/usr/bin目录下执行sudo ln -s ~/screenshot scs。以后直接在终端里输入scs即可用鼠标截图。

时间: 2024-12-23 02:24:30

CentOS安装scrot记的相关文章

Centos安装nvidia显卡驱动的问题

问题描述 Centos安装nvidia显卡驱动的问题 最近在学习Linux,于是将一台windows工作站装了centos7双系统.由于工作站的NVIDIA Qurado K2000显卡适配centos自带nouveau驱动实在糟糕,于是打算换装NVIDIA的官方Linux驱动.由于是菜鸟,手动编译显卡驱动的操作实在太复杂且对这些操作的意义不甚明了,故选择了从ELRepo源中安装NVIDIA驱动这一相对简单明了的方法,倒是成功换装了NVIDIA驱动,但是不是最新版,于是手一犯贱,自己下载了最新的

Centos 安装 VPN pptpd 防火墙 iptables 转发设置

 下面我们一起来看一篇关于Centos 安装 VPN pptpd 防火墙 iptables 转发设置,这个问题是因为一朋友设置之有一些网站无法访问时想出的解决办法.   centos 安装vpn 出现一部分网站无法访问的问题!iptables的一些转发规则设置 建立NAT转换规则,否则拨上也无法通过远程网关连上公网. iptables -t nat -A POSTROUTING -o eth0 -j SNAT –to-source $src_ip Centos 6.4 安装 vpn 遇到有些网站

CentOS安装qt4.8

  记录下在CentOS下安装qt4.8的过程: (最好是在英文系统语言环境下安装,中文可能会出现无法正确中文字体) 1. 安装必需的环境 安装gcc和g++: [root@localhost local]# yum install gcc [root@localhost local]# yum install gcc-c++ 安装Xlib:[root@localhost local]# yum install libX11-devel libXext-devel libXtst-devel 2

CentOS安装教程(CentOS 6.4图文安装)

CentOS 6.4是最新Linux服务器操作系统,跑php运行环境,linux是王道,6.4放出.速度已经很快. 这里PC6小编特地整理了下安装教程,有图有真相,一目了然,方便需要的朋友. 1.首先,要有一张CentOS 6.4的安装介质,没有的话可以在PC6本站下载(有种子跟地址) 界面说明: Install or upgrade an existing system 安装或升级现有的系统 install system with basic video driver 安装过程中采用基本的显卡

centos安装pdo_mysql扩展不成功

问题描述 centos安装pdo_mysql扩展不成功 环境:Centos 7 在PHP5.4.16的基础上安装pdo_mysql扩展不成功. 我的按照步骤:1)在PHP安装包的ext下找到pdo_mysql;2)执行]$ phpize 3) 执行:$ ./configure --with-php-config=/usr/bin/php-config --with-pdo-mysql=/var/lib/mysql4)出错提示:checking for mysql_config... not fo

centos安装百度云/百度网盘

centos安装百度云/百度网盘,centos 安装python2.7. 1.安装 sqlite-devel yum install sqlite-devel -y 2.安装 Python 2.7 wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz tar xf Python-2.7.8.tgz cd Python-2.7.8 ./configure –prefix=/usr/local make && make in

CentOS安装Nginx

一.安装准备   首先由于nginx的一些模块依赖一些lib库,所以在安装nginx之前,必须先安装这些lib库,这些依赖库主要有g++.gcc.openssl-devel.pcre-devel和zlib-devel 所以执行如下命令安装   [html] view plaincopy $   yum install gcc-c++   $   yum install pcre pcre-devel   $   yum install zlib zlib-devel   $   yum inst

centos 覆盖安装-关于centOS安装遇到的问题

问题描述 关于centOS安装遇到的问题 我原本在个人计算机上安装了win7和Ubuntu,今天我想在ubuntu分区重新安装centOS,安装成功之后,我想继续熟悉安装过程,就继续想用原来的centOS安装光盘重新覆盖安装已经存在的centOS系统,可是这次怎么也安装不上,警告提示安装光盘里找不到镜像文件,所以根本就进入不了安装界面.我也感觉自己没事儿找事,不过我是真的想了解.学习linux系统,还望各路大神指教啊!! 解决方案 分区已经达到4个主分区的原因?

centos安装pptp vpn

最近换了台IOS的手机,以前安卓用Shadowsocks(影梭)即可,刚好手里有台国外的VPS在挂网站, 顺便搭建一个pptp的服务在IOS上使用,pptp的搭建比openvpn容易多了! 安装步骤 检查环境 安装ppp和iptables 修改配置文件 启动pptp vpn服务和iptables 检查环境 先检查vps是否满足配置pptp vpn的环境.因为有的openvz的vps被母鸡给禁用了.其实,你在配置前最好向vps的客服发TK,可能客服会帮你开通vpn或者客服那里会给你他们自己定制的v