| |||||||
adm | Find | login register |
長久以來在 64-bit ArchLinux 用 Skype 總是叫不出 gcin,後來想到 32-bit 的程式一般需要載入 /usr/lib32 下的 library。但 64-bit 的 gcin 並不包含 32-bit 的 library,所以想嘗試自己 compile。在參考了其他 lib32-* package 之後 compile 了 lib32-gcin。configure 裡的 LIB='lib' 改成 LIB='lib32',也成功 compile 了。在確定 compile 出來的 binary 是 32-bit,且 qt4-im 的 plugin 也正確放入 lib32-qt 下後,發現 gcin 還是叫不出來。不知是我沒 compile 好,還是 32-bit library 不能跟 64-bit gcin 通?但我看 im-client 似乎是用 socket 來溝通,就算是 32-bit 也應該可以跟 64-bit server 溝通? #define 了 DBG 1 之後也沒看到什麼錯誤訊息。手動寫個測試程式去叫 gcin_im_client_open 同樣也沒有什麼錯誤訊息,但 gcin 就是不出來... 當然這問題只有 32-bit 的程式才有,Skype 大概是目前唯一一個我常用的 32-bit 程式 (Skype 早點死吧,好讓 gtalk 取代 XD...)。 | |||||||||||||
那為何不直接 install 別人 compile 好的 32-bit archlinux gcin package ? 會衝突嗎? 不論32/64 bit 的 gcin process(server),可以接受 32/64 im-client 是沒問題的。 不會說 32-bit im-client 就只能搭配 32-bit gcin process edited: 1
| |||||||||||||
ArchLinux 並沒有提供的 64-bit gcin 是不含 32-bit library,且不能直接安裝 32-bit 的 gcin,因為兩種版本有重複的檔案。如 /usr/bin/*、/usr/share/gcin/*,的確會衝突。ArchLinux 的做法是以 32-bit cross compile,然後將 library 抽出,最後在 package 名稱上標上 lib32。安裝時,library 都會裝到 /usr/lib32 才不會跟 64-bit 的 library 重疊。我也想以相同的方法 compile 32-bit library,但不知為何無效。不知其他 64-bit Linux 是否正常? | |||||||||||||
看起來比較好的做法是 compile 32-bit gcin 時把 gtk2, gtk3, qt4 的 im module 分開包裝,並且 把 gcin package dependency 成與 im module 有關聯,這樣就可以 install gcin 時同時 install im module。 | |||||||||||||
找到問題了,問題不單純... 本來以為直接拿 compile 好的 32-bit gcin 裡的 im-module 就能用,但 32-bit library 都放在 /usr/lib32,32-bit 的 im-module 跑去 load /usr/lib 下 64-bit 的 gcin-im-client,當然不能用。 我目前是手動將 32-bit Qt 的 header 檔取出,放在 gcin 的 source 裡,強行更改 include path。最後 compile 出來的 im-module 果然可以用了。不過正確的 package 製作方式可能要跟 Arch Linux 的 dev 請教了。 | |||||||||||||
疑?我的桌機也是安裝Arch Linux 64bit,在Skype下打中文並沒有問題。 | |||||||||||||
可能你是用 XIM?我是用 QT_IM_MODULE。 | |||||||||||||
很有可能,我的設定在這邊。我當初並沒有去深究這個問題,只要能夠輸入中文就可以了 |
| |||||||
adm | Find | login register |