Qt 4.x on Linux

作業は全て先日導入した仮想環境上。
Qt 4.5.3をスタティック版でコンパイルして導入します。
Windows版は 2009-08-08 - 日々量産 でやりました。
なので手順はほとんど同じ。


ほぼ全てコンソール操作で行います。

前準備

まず、必要なものを集める。
先日作ったばかりなので、gccも入っているか怪しいので、チェック。

# yum list gcc*
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* addons: www.ftp.ne.jp
* base: www.ftp.ne.jp
* extras: www.ftp.ne.jp
* updates: www.ftp.ne.jp
Available Packages
gcc.i386 4.1.2-46.el5_4.1 updates
gcc-c++.i386 4.1.2-46.el5_4.1 updates
gcc-gfortran.i386 4.1.2-46.el5_4.1 updates
gcc-gnat.i386 4.1.2-46.el5_4.1 updates
gcc-java.i386 4.1.2-46.el5_4.1 updates
gcc-objc.i386 4.1.2-46.el5_4.1 updates
gcc-objc++.i386 4.1.2-46.el5_4.1 updates
gcc44.i386 4.4.0-6.el5 base
gcc44-c++.i386 4.4.0-6.el5 base
gcc44-gfortran.i386 4.4.0-6.el5 base

GCCのversion4.4.0のパッケージがあるので、それを導入する。

yum -y install gcc44
yum -y install gcc44-c++


gccが実行できない。と思ったら、名前が違った。
都合が悪いので格納場所を探る。

# whereis gcc44
gcc44: /usr/bin/gcc44


場所がわかったのでシンボリックリンクを作る。
同様にC++コンパイル用の実行ファイル( g++44 )も。

ln -s /usr/bin/gcc44 /usr/bin/gcc
ln -s /usr/bin/g++44 /usr/bin/g++


他にQtをコンパイルするときに必要なものとかいれとく。

yum -y install libX11-devel
yum -y install libXext-devel
yum -y install freeglut-devel

上2つは無いとQtのconfigureの段階でエラーが出る。
FREEGLUTはOpenGLを使う場合に入れると、configure時に自動認識してくれて、OpenGLが有効になる。

Qt

Qtのソースコードは以下から入手。
http://qt.nokia.com/downloads-jp
ここからLGPL版の"Qt: フレームワークのみ"のところのマシンにあったものを入手。
Linux/X11版Qtライブラリ4.5のダウンロード (60 Mb) というものを選択(実際は100MB以上ある)

mkdir qt-tmp
cd qt-tmp
wget http://get.qt.nokia.com/qt/source/qt-x11-opensource-src-4.5.3.tar.gz
tar xvzf qt-x11-opensource-src-4.5.3.tar.gz
cd qt-x11-opensource-src-4.5.3


configureでmakefileを作るが、
今回のQtはスタティックリンク版で作りたいので、それにあわせてconfigureにオプションをつける。
./configure -hとすると、オプションの説明が出てくる。
今回のインストール先は/usr/local/Qt-4.5.3/staticとした。後でno static版を後でいれるためにこんな感じにした。

./configure -prefix /usr/local/Qt-4.5.3/static -opensource -static -release -qt-zlib -qt-gif -qt-libjpeg -qt-libpng -qt-libtiff -webkit


configureを実行すると、規約を読んだか?と聞かれるので、「yes」で応答。
読んでない場合はそれぞれGPLなら「3」LGPLなら「L」と応答すると規約がでる。
ちなみに、-opensourceを指定しない場合は、最初にオープンソース版か商用利用版かを聞かれる。
configureはちょっと長い。
configureを終えると、gmakeをやってgmake installをしろと言われる。
gmakeは、GNU make のことで、CentOSに入れたmakeはgmakeと同じ(シンボリックリンク)なので、makeでOK。

make
make install

makeはかなり長い。手持ちの仮想環境上で2時間半。


有名なサンプルプログラムを書いて実行してみる。
PATHに導入したQtのインストール先のbinディレクトリを指定する。

PATH=/usr/local/Qt-4.5.3/static/bin:$PATH
export PATH

mkdir sample
cd sample
vi sample.cpp

#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[]){
	QApplication app(argc, argv);
	QLabel *label = new QLabel("Hello Qt");
	label->show();
	return app.exec;
}

qmake -project
qmake
make
./sample

PATHをいじるので、固定にしたい場合は ~/.bash_profileにでも、最初の1行をexport PATHの前に書くと、
次からはPATH設定いらずなのでラク。ただ、no staticと切り替えるときめんどくさくなるry


「Hello Qt」と書かれた小さい小さいウィンドウが出ればOK。
実行ファイルの大きさはスタティックライブラリを使っているだけあり、堂々の11MB。
ただ、1つの実行ファイルで必要なライブラリを全て詰め込んでるので、仕方ないね。
これによって、ファイルが散らばったりする事もないし、
内部のコード数が増えて実行ファイルが肥大化しても諦めがつきやすそう。


また開発環境には、Windows版と全く同じ操作感で使えるLinux版のQt Creatorがいい感じ。
no static版と共存させるのも簡単で、事前に使用するバージョンを登録しておけば、
ビルド時にどちらの環境を使ってビルドするかを3回のクリックで選べる。
ただしリソースが英語表示。
標準のSDKでついてくるし、下のほうにある、
Linux/X1132-bit版Qt Creator 1.2.1バイナリのダウンロード (31 Mb)」
からでも導入できる。


releaseオプションだけをつけてQtをコンパイルしたので、debugでビルドする事はできません。(ライブラリがないといわれるはず)
-release-and-debugオプションにした場合は知らない。