2012年12月25日火曜日

silkビルドしてみました


また間が空いてしまった3日坊主の隠者です。メリークリスマス・・・にはちょっと遅いかな。

さて、@task_jp さんが始めた、qmlでコンテンツを書ける変態素敵なWeb serverのsilkを触りはじめました。とりあえず本日はビルドにつまづいた所を少しだけ。

1. 環境構築

環境としては、Ubuntu 12.10(64bit)版を利用しました。いや、MBPの中にVMのバックアップが転がっていたもので。Qt 5.0.0をビルドするために途中まで準備していた環境ですので、以下の事をしてあります。

$ sudo apt-get install build-essential perl python git
$ sudo apt-get install "^libxcb.*" libx11-xcb-dev libglu1-mesa-dev libxrender-dev
$ sudo apt-get install flex bison gperf libicu-dev libxslt-dev ruby

それと、ビルド途中にエラーになって気がついたのですが、zlibが必要でした。
$ sudo apt-get install zlib1g-dev

Qtはバイナリパッケージを使いました。色々問題があるらしいので、自分でビルドするのが適切なんでしょうが、まぁ、それだと普通の人には敷居が高いので。

$ wget http://releases.qt-project.org/qt5/5.0.0/qt-linux-opensource-5.0.0-x86_64-offline.run
$ chmod 755 qt-linux-opensource-5.0.0-x86_64-offline.run
$ ./qt-linux-opensource-5.0.0-x86_64-offline.run


2.ソースコードの入手

$ git clone git://git.qtquick.me/silk.git
$ cd silk
$ git submodule update --init


3. Build

$ ${HOME}/Qt5.0.0/5.0.0/gcc_64/bin/qmake
$ make

でビルドできるはずでしたが、以下のようなエラーが出ました。

g++ -m64 -Wl,-z,origin '-Wl,-rpath,/home/hermit4/Qt5.0.0/5.0.0/gcc_64:$ORIGIN/../lib' -Wl,-O1 -Wl,-rpath,/home/hermit4/Qt5.0.0/5.0.0/gcc_64/lib -o ../../bin/silk .obj/release-shared/main.o .obj/release-shared/qrc_etc.o .obj/release-shared/qrc_errors.o -L/home/hermit4/silk//lib -lsilk -L/home/hermit4/Qt5.0.0/5.0.0/gcc_64/lib -lQt5Network -lQt5Core -lpthread
/home/hermit4/silk//lib/libsilk.so: undefined reference to `deflateInit_'
/home/hermit4/silk//lib/libsilk.so: undefined reference to `deflate'
/home/hermit4/silk//lib/libsilk.so: undefined reference to `deflateEnd'
collect2: error: ld returned 1 exit status
make[2]: *** [../../bin/silk] Error 1


どうやら、zlibとリンクが取れていなようです。@task_jp さんの環境だと、Qt5のビルド時にQtバンドル版のzlibを使うような指定をしているのかもしれませんね。


どこに入れるのが適切なのかはまだ検討できていませんので、とりあえず適当に以下のような修正でしのいでいます。

--- a/src/lib/lib.pri
+++ b/src/lib/lib.pri
@@ -6,4 +6,4 @@ include(../../qthttpserver/include.pri)
 LIBS *= -L$$SILK_BUILD_TREE/$$SILK_TARGET_PATH/$$SILK_LIBRARY_PATH
-LIBS *= -l$$qtLibraryName(silk)
+LIBS *= -l$$qtLibraryName(silk) -lz

src/lib/lib.pri のLIBS指定に、-lz を追加しました。

2012/12/29 訂正。task_jpさんが対処済みでした。いまは、git cloneしてmakeすればそのまま通りそうですね。

とりあえず、しばらくはソースツリーとか、内部の実装を色々見て行きたいなと思っています。

なお、蛇足ですが、上記のVMだとQt 5.0.0のビルド手順サイトにある、以下の手順が足りてない状態です。

$ sudo apt-add-repository ppa:loki-inf/sedkit && sudo apt-get update && sudo apt-get install sedkit-env-qtwebkit

0 件のコメント:

コメントを投稿