2006年4月25日の日記の1番目の記事へのコメント
■KO/Piのビルド
昨日途中まで書きましたが,T42でKO/Piビルドしようとしたら以下のようなエラーがでてしょんぼりでした.
g++ -c -pipe -Wall -W -O2 -fPIC -DDESKTOP_VERSION -DQT_NO_DEBUG -DQT_SHARED -DQT_THREAD_SUPPORT -I/usr/local/share/qt/mkspecs/default -I. -I/usr/local/include/qt -I../qpe -I.. -I../../microkde -I../../microkde/kdecore -I../../libetpan/include -I/usr/local/include -Imoc/unix/ -o obj/unix/qdialog_hacked.o ../qpe/qdialog_hacked.cpp ../qpe/qdialog_hacked.cpp:9: error: 文法エラー before `::' token (以下略)
qdialog_hacked.cppを見ても,文法に問題があるようには見えません.普通にQtのヘッダincludeしてるだけに見えます・・・.
#include <qdialog.h> #include <qhbox.h> #include <qpushbutton.h> #include <klocale.h>
うーん,includeが怪しい.というわけで,ごそごそあさってみたら,qdialog.hをkmicromail/qpe/以下に自前でもってることが発覚.中を見ると
#ifndef DEFINE_QDIALOG_HACK #define DEFINE_QDIALOG_HACK #warning call of include <qdialog.h> #warning including /usr/local/qt/include/qdialog.h #warning if you get a compiling error #warning please adjust your path here! #include "/usr/local/qt/include/qdialog.h"
なんて書いてあるし(;´Д`).「/usr/local/qt/include/qdialog.h」はひどいよなぁ・・・.自分の環境にあわせて「/usr/local/include/qt/qdialog.h」に直して,さらにMakefile内で kmicromail/qpe/qdialog.h が先にincludeされるように「-I../qpe」を手前にもってきてここは解決.ふぅ,挫折しなくてよかった・・・.
あと,何かわからんのですが,普通にmakeするとuicがセグります.
/usr/local/bin/uic kofilterview_base.ui -i kofilterview_base.h -o kofilterview_base.cpp make[1]: *** [kofilterview_base.cpp] セグメンテーション違反です
gdbで見てみると,以下のような感じで,なぜかlibkdeui.so.4が呼ばれています・・・.実はこれ,いつ頃からかQt自体をビルドする間にも出るようになって,Qt作るときはkdelibsも一旦消しておくとかいうひどいwork aroundで逃げてたんですが,やっぱおかしい・・・.
(gdb) bt #0 0xb7f4be19 in do_lookup () from /lib/ld-linux.so.2 #1 0xb7f4aeb9 in _dl_lookup_symbol_internal () from /lib/ld-linux.so.2 #2 0xb7f4e9df in fixup () from /lib/ld-linux.so.2 #3 0xb7f4ebd0 in _dl_runtime_resolve () from /lib/ld-linux.so.2 #4 0x080c6ae8 in ?? () #5 0x000060d8 in ?? () #6 0xb67a0ac8 in __static_initialization_and_destruction_0 () from /usr/local/lib/libkdeui.so.4 #7 0xb690a70a in global destructors keyed to _ZN7QXEmbed7metaObjE () from /usr/local/lib/libkdeui.so.4 #8 0xb679feab in __do_global_dtors_aux () from /usr/local/lib/libkdeui.so.4 #9 0xb6927916 in _fini () from /usr/local/lib/libkdeui.so.4 #10 0xb7f4f421 in _dl_fini () from /lib/ld-linux.so.2 #11 0xb73246ac in exit () from /lib/libc.so.6 #12 0xb730f82b in __libc_start_main () from /lib/libc.so.6 #13 0x0804e3c1 in ?? ()
とりあえずuic自体がlibkdeui.so.4に直接リンクしてるわけではないと思うわけで,そうなるとuicの中でライブラリ読み込んでたりするのかな?「uic --help」すると「-nounload」なんて怪しげなオプションが表示されて,説明には
Don't unload plugins after processing
なんてあります.試しにつけてみたら・・・セグらず通ったしヽ(゜∀゜)ノ.ううむ,なんなんだこりゃ.ググるとkitaのスレが出てきますね(^^;.とりあえずこれを付けてKO/Piのビルドは完走.後でちゃんと調べよう.
ちなみに,同じようにQt入れてるから当然なんですが,Zaurusでも同じようにqdialog_hacked.cpp問題が出ました.で,同じように解決.T42で練習しておいてほんとよかったっす.ていうかkmicromailって,実はkopi本体と関係ないんじゃ・・・(;´Д`)?
2006年4月25日の日記の1番目の記事へのコメント
[コメントを書く]