CenOS with CutyCapt

CenOS with CutyCapt

一 安裝QT44

二 把安裝QT44目錄寫到環境參數中

三 下載軟體編譯安裝

四 安裝x-server

五 Dbug

安裝QT44解碼器居然有三種方法

1. rmp包安裝

2. 增加源安裝

3. Centos 6.X 直接yum安裝更新版確實方便

rpm 安裝

安裝 QT44 解碼器
(x86)
wget http://ftp.riken.go.jp/Linux/atrpms/el5-i386/atrpms/testing/qt44-4.4.3-10_4.el5.i386.rpm
wget http://ftp.riken.go.jp/Linux/atrpms/el5-i386/atrpms/testing/qt44-x11-4.4.3-10_4.el5.i386.rpm
wget http://ftp.riken.go.jp/Linux/atrpms/el5-i386/atrpms/testing/qt44-devel-4.4.3-10_4.el5.i386.rpm

(x64)
wget http://dl.atrpms.net/el5-x86_64/atrpms/testing/qt44-4.4.3-10_4.el5.x86_64.rpm
wget http://dl.atrpms.net/el5-x86_64/atrpms/testing/qt44-x11-4.4.3-10_4.el5.x86_64.rpm
wget http://dl.atrpms.net/el5-x86_64/atrpms/testing/qt44-devel-4.4.3-10_4.el5.x86_64.rpm

rpm -ivh qt44-4.4.3-10*
rpm -ivh qt44-x11-4.4.3-10*
rpm -e qt-devel –nodeps –allmatches
rpm -ivh qt44-devel-4.4.3-10*
rpm -rebuilddb

這一步如果不成功的話應該是各種依賴的問題

可以安裝 qt-devel 依賴包
yum install libXi-devel
yum install libXinerama-devel

也許這裏還會有報錯提示

warning: qt44-x11-4.4.3-10_4.el5.x86_64.rpm: Header V4 DSA signature: NOKEY, key ID 66534c2b
error: Failed dependencies:
libGLU.so.1()(64bit) is needed by qt44-x11-4.4.3-10_4.el5.x86_64
libmng.so.1()(64bit) is needed by qt44-x11-4.4.3-10_4.el5.x86_64

執行代碼:

yum -y install qt-devel*

提示依賴什麼就裝什麼。

可以用 yum search packName 來找有沒有這個包

如:yum search qt-devel

如果結果結果有包,那麼安裝時上執行 yum -y install qt-devel* 安裝,加*號是為了安裝上它所有的依賴包

增加源安裝

CentOS 5.x 安裝教程如下:

Add this to /etc/yum.repos.d/CentOS-Base.repo
#ATrpms
[atrpms]
name= CentOS-$releasever – ATrpms
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/testing
gpgcheck=1
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
enabled=1

rpm –import http://packages.atrpms.net/RPM-GPG-KEY.atrpms
yum install subversion qt47-devel qt47-webkit gcc-c++ qt47-webkit-devel sqlite
centos 6.x安裝

安裝gc-c++

yum install gcc-c++

安裝Qt依懶

yum install qt

yum install qt-devel

安裝的目錄在:

/usr/lib64/qt4

qmake 可以用 /usr/lib64/qt4/bin/qmake 執行

環境變數配置

加入 QT 目錄到環境參數中 如果是32位元系統刪除下面紅字的64
vim /etc/profile
#==================================================
export QTDIR=/usr/lib64/qt44
export QTLIB=/usr/lib64/qt44/lib
export QTINC=/usr/lib64/qt44/include
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export PATH=$QTDIR/bin:$PATH
#==================================================

保存退出後,運行一次該檔

source /etc/profile

編譯程序

% svn co https://cutycapt.svn.sourceforge.net/svnroot/cutycapt (沒有svn的yum install subversion)h
% cd cutycapt/CutyCapt
% qmake
% make

如果沒有X server的話需要使用xvfb-run:

wget http://www.flexthinker.com/wp-content/uploads/2009/11/xvfb-run.sh.txt

mv ./xvfb-run.sh.txt ./xvfb-run.sh

chmod u+x ./xvfb-run.sh

./xvfb-run.sh –server-args=”-screen 0, 1024x768x24″ /home/xxx/cutycapt/CutyCapt/CutyCapt –url=http://www.163.com –out=163.jpg
dbug

qmake

make

出現以下錯誤

/usr/lib64/qt47/libQtWebKit.so: undefined reference to `sqlite3_prepare16_v2′

/usr/lib64/qt47/libQtWebKit.so: undefined reference to `sqlite3_column_value’

collect2: ld returned 1 exit status

make: *** [CutyCapt] Error 1

解決:

yum update sqlite

再次執行

make

如果還不成功

qmake-qt47
再次執行make

以下表示make成功

[root@localhost CutyCapt]# make

g++ -Wl,-O1 -o CutyCapt CutyCapt.o moc_CutyCapt.o -L/usr/lib64/qt47 -lQtWebKit -lQtSvg -L/usr/lib64/qt47 -lQtGui -lQtNetwork -lQtCore -lpthread

執行

xvfb-run –server-args=”-screen 0, 1024x768x24″ ./CutyCapt –url=http://www.baidu.com/ –out=localfile1.png –body-string=utf-8

出現-bash: xvfb-run: command not found

安裝

yum install Xorg Xvfb xauth xorg-x11-fonts*

不知道為什麼安裝後 沒有自動生成xvfb-run

下載並上傳xvfb-run腳本到

/usr/bin

chmod +x xvfb-run

運行 ../../xvfb-run.sh ./CutyCapt –url=http://www.baidu.com/ –out=localfile1.png –body-string=utf-8

Locking assertion failure. Backtrace:

#0 /usr/lib/libxcb-xlib.so.0 [0x114737]

#1 /usr/lib/libxcb-xlib.so.0(xcb_xlib_unlock+0x31) [0x114891]

#2 /usr/lib/libX11.so.6 [0xc1d021]

#3 /usr/lib/libXfixes.so.3(XFixesQueryVersion+0x4b) [0x2ddebb]

#4 /usr/lib/qt47/libQtGui.so.4 [0x4f5ad20]

#5 /usr/lib/qt47/libQtGui.so.4(_ZN19QApplicationPrivate9constructEP9_XDisplaymm+0xdf) [0x4ecf15f]

#6 /usr/lib/qt47/libQtGui.so.4(_ZN12QApplicationC1ERiPPcbi+0x8b) [0x4ecfd7b]

#7 ./CutyCapt(_ZN8QWebPage13triggerActionENS_9WebActionEb+0x1838) [0x804bcdc]

#8 /lib/libc.so.6(__libc_start_main+0xdc) [0x326e9c]

#9 ./CutyCapt(_ZN7QObject5eventEP6QEvent+0x15d) [0x804ac21]

CutyCapt: xcb_xlib.c:82: xcb_xlib_unlock: Assertion `c->xlib.lock’ failed.

../../xvfb-run.sh: line 168: 12780 Aborted DISPLAY=:$SERVERNUM XAUTHORITY=$AUTHFILE “$@” 2>&1

BUG描述:
運行用Swing的APP時,會無法啟動,顯示類似於”Assertion `c->xlib.lock’ failed.”的
問題
如Zend Studio和NetBeans無法正常啟動,官方解釋這是由於使用了XCB而不是LibX的緣故
,關鍵就在於assert時,Lock問題。一種解決方案是回去使用libx,另一種則是去掉asse
rt時的檢查。

下面的解決方案可行,(試過。)

[轉]
=======================================
Here’s one explaination:

Re: NB doesn’t work in open suse 10.3 “Assertion `c->xlib.lock’ failed.”
Click to flag this post

by pujansrt Oct 11, 2007; 02:45pm :: Rate this Message: – Use ratings to moder
ate (?)

Reply | Reply to Author | View Threaded | Show Only this Message
This is the solution–> just add this to your Environment
export LIBXCB_ALLOW_SLOPPY_LOCK=1

========================================

也就是運行程式前先運行

export LIBXCB_ALLOW_SLOPPY_LOCK=1

再次運行

xvfb-run –server-args=”-screen 0, 1024x768x24″ ./CutyCapt –url=http://www.baidu.com/ –out=localfile1.png –body-string=utf-8

等一會見到生成了localfile1.png表示成功了

不過每次都輸入

export LIBXCB_ALLOW_SLOPPY_LOCK=1 有點麻煩

大神給了個解決方法

cat > run

vi run

輸入

export LIBXCB_ALLOW_SLOPPY_LOCK=1

../../xvfb-run.sh ./CutyCapt –url=$1 –out=$2 –body-string=$3

保存退出

chmod +x ./run

./run http://www.baidu.com test.jpg, utf-8

依次輸入 $1 http://www.baidu.com $2 圖片名 $3字體

截圖成功

如果中文不能正常顯示的話,需要安裝字體檔

yum install fo nts-chinese