意外にあっさり終わってしまったなと思っていた時に、talk-jaで話題になっていたMarbleのことを思い出しました。Marbleというアプリケーションは、(衛星画像や地図が表面に貼り付けられた)地球をGoogle Earthのようにグリグリと回せるもので、OpenStreetMapの地図の表示もできます。
talk-jaでは「KDE Marble」と紹介されていたのでLinuxをあまり使ったことの無い私はUbuntuには関係の無い話だと思っていましたが、Windows版はQtを使っており、もしかしたらと思って公式サイトを眺めているとQt-onlyでもコンパイルできることが分かったので、私もMarbleを触ってみることにしました。
せっかくなので、MarbleをQt-onlyアプリケーションとしてコンパイルして動かすまでに試行錯誤したことを書いておこうと思います。
1. Qtの導入
QtはMapnikViewerを動かす為に入れてあったので、今回は無し。その時のメモはこちら。
2. ソースコードの入手
ソースコード (.tar.gzファイル) はダウンロードページから入手できますが、コンパイルの手引きのページではSVNからの入手を奨めているので、今回はSVNから安定版を入手することにしました。
vmuser@vmuser-desktop:~$ sudo su
[sudo] password for vmuser:
root@vmuser-desktop:/home/vmuser# cd /usr/local/src
root@vmuser-desktop:/usr/local/src# svn co svn://anonsvn.kde.org/home/kde/branches/KDE/4.1/kdeedu/marble
3. cmakeのインストール
cmakeは使ったことが無く、Ubuntu8.04にも入っていなかったのでインストールしました。
vmuser@vmuser-desktop:~$ sudo su
[sudo] password for vmuser:
root@vmuser-desktop:/home/vmuser# apt-get install cmake
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
libestraier8 libqdbm14
これらを削除するには 'apt-get autoremove' を利用してください。
以下のパッケージが新たにインストールされます:
cmake
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
4808kB のアーカイブを取得する必要があります。
この操作後に追加で 12.4MB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com hardy/main cmake 2.4.7-1build1 [4808kB]
4808kB を 5min24s で取得しました (14.8kB/s)
未選択パッケージ cmake を選択しています。
(データベースを読み込んでいます ... 現在 141371 個のファイルとディレクトリがインストールされています。)
(.../cmake_2.4.7-1build1_i386.deb から) cmake を展開しています...
cmake (2.4.7-1build1) を設定しています ...
4. buildディレクトリの作成
buildディレクトリを作成して移動します。
root@vmuser-desktop:/usr/local/src# cd ../bin※ディレクトリの作成場所はコンパイルの手引きのページに書いてあるものと異なっています。
root@vmuser-desktop:/usr/local/bin# mkdir marble-build
root@vmuser-desktop:/usr/local/bin# cd marble-build
5. cmakeの実行
cmakeを実行します。
root@vmuser-desktop:/usr/local/bin/marble-build# cmake -DQTONLY=ON ../../src/marbleqmakeが見付からないと怒られたので、cmakeをやり直しました。
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Check size of void*
-- Check size of void* - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
WARNING: This project requires version 2.4.8 of CMake. You are running version 2.4.7.
CMake Error: Qt qmake not found!
-- Configuring done
root@vmuser-desktop:/usr/local/bin/marble-build# cmake -DQTONLY=ON -DQT_QMAKE_EXECUTABLE=/usr/local/Trolltech/Qt-4.3.4/bin/qmake ../../src/marbleなんかCMakeのバージョンが古いという警告メッセージが出ていますけど、CMakeはさっきインストールしたばかりでどうしたらいいのか分からないので、そのまま進むことにしました。
WARNING: This project requires version 2.4.8 of CMake. You are running version 2.4.7.
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - found
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found.
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found.
-- Found Qt-Version 4.3.4
-- Not building with Gpsd Support
-- not building with gpsd support
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/bin/marble-build
root@vmuser-desktop:/usr/local/bin/marble-build# ls
CMakeCache.txt Makefile src
CMakeFiles cmake_install.cmake svnscript.cmake
CPackConfig.cmake cmake_uninstall.cmake tests
CPackSourceConfig.cmake data
root@vmuser-desktop:/usr/local/bin/marble-build#
6. makeの実行
makeを実行します。
root@vmuser-desktop:/usr/local/bin/marble-build# make出力メッセージは長いので省略。
7. make installの実行
make installを実行します。
root@vmuser-desktop:/usr/local/bin/marble-build# make install出力メッセージは長いので省略。
8. marbleの実行
marbleを実行します。
vmuser@vmuser-desktop:~$ marble動きません。ホームディレクトリにlibQtCore.so.4のシンボリックリンクを作ってみましたが、状況は変わらず駄目でした。
marble: error while loading shared libraries: libQtCore.so.4: cannot open shared object file: No such file or directory
vmuser@vmuser-desktop:~$
cmakeの段階でQT_QTCORE_LIBRARYを指定してやり直し。
root@vmuser-desktop:/usr/local/bin/marble-build# cmake -DQTONLY=ON -DQT_QMAKE_EXECUTABLE=/usr/local/Trolltech/Qt-4.3.4/bin/qmake -DQT_QTCORE_LIBRARY=/usr/local/Trolltech/Qt-4.3.4/lib/libQtCore.so.4.3.4 ../../src/marble > cmakelog.txt状況は変わらず、これも駄目。
WARNING: This project requires version 2.4.8 of CMake. You are running version 2.4.7.
root@vmuser-desktop:/usr/local/bin/marble-build#
検索して少し調べてみると、環境変数でLD_LIBRARY_PATHを指定すると良いようです。 .bashrc の末尾に追加して試してみると、
LD_LIBRARY_PATH=/usr/local/Trolltech/Qt-4.3.4/lib今度は libmarblewidget.so.6 が見付からないと怒られてしまいましたので、.bashrc を修正すると、
export LD_LIBRARY_PATH
LD_LIBRARY_PATH=/usr/local/Trolltech/Qt-4.3.4/lib:/usr/local/bin/marble-build/src/lib解決!
export LD_LIBRARY_PATH
|