Linux 64-bit 再び
Ubuntu 64-bit移植のため、プロトコル構造体を見直しました。
結局のところ、8バイトになってしまったlongを4バイトであるintに書き換えただけでO.K.でした。あと定数をL付きからLなしにすることも必要でしたが。それぞれのメンバオフセットは正確に一致しています。1つだけdoubleのメンバがありますが、問題なさそうです。
さて、64bit Ubuntu 13.10 でビルドしようとしましたが、Ubuntu 13.10でパッケージとして提供されているQt5は5.0.2と少し古いです。Windowsでは5.2.1を利用しているので、これに合わすためQt Projectから直接最新をダウンロードしてインストールしました。
qt-opensource-linux-x64-5.2.1.run
というファイルです。普通システムにインストールするので、sudoコマンドでインストールします。
#ちなみに5.0.2では「multimedia moduleはない」という旨のメッセージが表示されます。
sudo ./qt-opensource-linux-x64-5.2.1.run
インストーラウィンドウが表示され、/opt/Qt5.2.1 にインストールするよう勧められます。あまり気にしないので、そのままインストールします。Qt5.2.1/5.2.1/gcc_64/bin へのパス設定追加をお忘れなく。
5.2.1のqmakeコマンドを使えば、問題なくMakefileが生成されました。
これでO.K.かと思いきや、さらなる問題が発覚しました。認証チェック用のデータ生成処理が32bit時と異なるようです。ま、x64でウィンドウが出たので今日はよしとします。基本的には書き換えなしでO.K.です。コードの可搬性の問題ですね。移植性がないコードを書くとハマることがよくありますね。
これで普段使っているWindows8.1とUbuntu x64 での検証作業ができることになりました。ソースコードはコメント込みで1511行です。コメント(ワンラインコメント"//"でしか書いていない)が457行なので、実質1000行ちょっとですね。AndoroidとかiOS(iPhone, iPad)とかMacも検証できるといいですが、あまり手を広げすぎても進まないので、しばらくWindows8.1とUbuntu x64 で確認したいと思います。(FreeBSDも確認したいんですが…5.2.1はソースからビルドしなければならないかも)
コンパイル時にQt5さんが自動生成するソースコードは6000行ちょっとです。
moc_xxxxx.cpp, qrc_xxxxx.cpp という名前のソースコードが自動生成されます。Linuxだと標準でMakefileと同じディレクトリに生成されるので、少し気持ち悪いです。qmake実行時に何か指定できるのかも、後で調べよう。
(追記) 自動生成するコードのうち5943行はjpgファイルの取り込み用のデータ定義(qrc_xxxx.c)でした。
(追記2) openGLライブラリが必要でした。
sudo apt-get install libglu1-mesa-dev
でopenGLライブラリをインストールしてください。
« 音がでないなぁ | トップページ | Linux 64-bit でも画像でました »
コメント