ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

LinuxコミュのPidginのプラグイン作成方法について

  • mixiチェック
  • このエントリーをはてなブックマークに追加
お世話になっております。
うとぅんと申します。

初心者質問トピに投稿するには若干そぐわないかと思い、
トピックスとして投稿させていただきます。
そもそも本コミュでいいのか分かりませんが、お付き合いいただければ幸いです。


早速本題となりますが、
私は現在、インスタントメッセンジャー
「Pidgin」のプラグインを作成したいと考えております。
しかし、日本語テキストに乏しく、作業が難航中です。
詳細は以下の通りです。

環境:
OS:ubuntu-11.10(Fedora16でも試行中です)
PC:VMware Server 2.0
IDE:なし(基本ターミナル&viで作業)
言語:C

現状:
Pidginのソース自体はコンパイルできています。
ソースは以下よりDL済み。
http://pidgin.im/download/source/
また、Ubuntuでの開発環境に必要とされるであろうものは
以下コマンドによりインストール済みです。
#sudo apt-get build-dep pidgin

★やりたいこと:
以下のサンプルソースからコンパイルし、プラグインを作成する。
http://developer.pidgin.im/wiki/CHowTo/BasicPluginHowto

問題:
上記Howto通りにやっても、make時に作成したファイルがコンパイルされません。
そもそも私が「make」について理解していないのですが、
Howto上ではMakefileの編集等には触れていないようなので
何か簡単にできる方法があるのではと考えています。
但し、Makefileを弄る様なやり方でも出来るなら問題ありません。
また、元々存在している「helloworld.c」はコンパイルされているようですが
「.so」が作成されず、こういったものもどうやってプラグインとして追加するのか分かりません。


以上、とりとめのない内容で申し訳ございませんが、
皆様のお知恵を賜れれば幸いです。
宜しくお願い致します。

コメント(8)

元々存在する「helloworld.c」につきまして、
「.so」を作成することに成功いたしました。
コンパイル後作成される「helloworld.o」をそのまま利用し、
#gcc -shared -o helloworld.so helloworld.o
とするだけでした。
初歩的な部分を失念しておりまして申し訳ございません。


> ?+_+?┓┣┏┃┏様
早速のご返信有難う御座います。
--enable-sharedオプションにつきまして、
私の使い方が悪いのか、うまく行きませんでした。
makeでそのまま出来た方が楽なので、もう少し調べてみます。
大分時間が空いてしまいましたが、現状以下の部分で詰まっております。

●Ubuntu上でWindows用にクロスコンパイルする。

・現状やったこと
以下のHPにある内容に沿って環境を構築致しました。
http://developer.pidgin.im/wiki/BuildingWinPidgin
http://garakuta.homelinux.org/~nosuke/tsubo/index.php?Windows%2FPidgin%A4%F2%A5%D3%A5%EB%A5%C9%A4%B7%A4%C6%A4%DF%A4%EB%2F%A5%D3%A5%EB%A5%C9%BC%EA%BD%E7%2Fpidgin-2.7.11


・問題点
以下コンパイル時のメッセージです。(ベタ張りで申し訳ありません)

$ make -f Makefile.mingw installers
・・・(文字数の関係で一部省略)
make -C ./libpurple -f Makefile.mingw
make[1]: Entering directory `/home/****/work/pidgin-2.7.11/libpurple'
/usr/bin/i586-mingw32msvc-cc -O2 -Wall -Waggregate-return -Wcast-align -Wdeclaration-after-statement -Werror-implicit-function-declaration -Wextra -Wno-sign-compare -Wno-unused-parameter -Winit-self -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wundef -pipe -mno-cygwin -mms-bitfields -g -DHAVE_CYRUS_SASL -DHAVE_CONFIG_H -DWIN32_LEAN_AND_MEAN -I../../win32-dev/w32api/include -I../libpurple -I../libpurple/win32 -I.. -I../../win32-dev/gtk_2_0-2.14/include -I../../win32-dev/gtk_2_0-2.14/include/glib-2.0 -I../../win32-dev/gtk_2_0-2.14/lib/glib-2.0/include -I../../win32-dev/libxml2-2.7.4/include/libxml2 -o account.o -c account.c
In file included from internal.h:50,
from account.c:26:
../../win32-dev/gtk_2_0-2.14/include/libintl.h:91:25: warning: "__APPLE_CC__" is not defined
../../win32-dev/gtk_2_0-2.14/include/libintl.h:113:24: warning: "__APPLE_CC__" is not defined
In file included from account.c:26:
internal.h:106:21: error: dlfcn.h: No such file or directory
In file included from dbus-server.h:54,
from dbus-maybe.h:15,
from account.c:29:
dbus-bindings.h:31:23: error: dbus/dbus.h: No such file or directory
dbus-bindings.h:32:37: error: dbus/dbus-glib-lowlevel.h: No such file or directory
In file included from dbus-server.h:54,
from dbus-maybe.h:15,
from account.c:29:
dbus-bindings.h:41: error: expected declaration specifiers or '...' before 'DBusError'
dbus-bindings.h:43: error: expected declaration specifiers or '...' before 'DBusError'
dbus-bindings.h:65: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'purple_dbus_message_get_args'
dbus-bindings.h:70: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'purple_dbus_message_get_args_valist'
dbus-bindings.h:76: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'purple_dbus_message_iter_get_args'
dbus-bindings.h:82: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'purple_dbus_message_iter_get_args_valist'
dbus-bindings.h:87: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
dbus-bindings.h:89: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
dbus-bindings.h:92: error: expected declaration specifiers or '...' before 'dbus_int32_t'
dbus-bindings.h:94: error: expected declaration specifiers or '...' before 'dbus_int32_t'
dbus-bindings.h:95: error: expected ')' before '*' token
dbus-bindings.h:103: error: expected specifier-qualifier-list before 'DBusMessage'
dbus-bindings.h:108: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
make[1]: *** [account.o] Error 1
make[1]: Leaving directory `/home/****/work/pidgin-2.7.11/libpurple'
make: *** [all] Error 2
(※ユーザ名は「****」に置換しています)

このようなメッセージが出ます。
「dlfcn.h」等のパスが通っていないのは分かりますが、
一つ一つパスを通してもエラーが増えていく一方ですので、
何か根本的に間違っているのではと考えております。

当方、Makeを使用したコンパイルは初心者ですので
単純な間違いを犯しているのではと考えているのですが
もしお気づきの点等御座いましたらご教授頂けませんでしょうか。

宜しくお願い致します。
参考URLみましたが、Cygwin上でコンパイルしているようですが。。。
公式ページの方では、一番下の「Cross Compiling」の項でLinux上でのクロスコンパイル方法が説明されています。
まったくこの通りにやっているつもりなのですが・・・泣き顔

ちなみに、使用している各種ソフトも基本的にバージョンを説明されているものに合わせています。
但し、「Perl」と「Bonjour SDK」は説明のものより新しいバージョンを入れています。
一応どちらも「or newer」となっているので問題ないと思ってはいるのですが、もしや・・・?

あと、実は一旦諦めてWindows+Cygwinでも試行しています。
しかしこちらも同じようなエラーが出て止まっています。
> ユウタ様
すみません。お礼を書き忘れておりました。
ご返信有難う御座います。

引き続き宜しくお願い致します。
始めに断わり文を入れるのを忘れていましたが、私はPidingやC言語とかには詳しく無いです。

んで、書き込んでいる内容を見ると、着地点がよくわからなくなっていたのですが。。。
着地点はスレタイトルの「Pidginのプラグイン作成」ですか?
それとも、CrossコンパイルでWindowsで動作するPidingをUbuntuで こさえたいのですか?

# 余計なお世話だと思いますが、一つずつ解決しないと先に進まないかと。。。
> ユウタ様
有難う御座います。
取りとめのない内容となってしまいまして申し訳ございません。

着地点としては、当初は
「Linux上でサンプルソースをコンパイルして動くところまで」
でございましたが、
最終的にはWindows用にコンパイルをしたかった為
そのまま質問してしまった形です。

また、何であれ動けば良いので、
コンパイルするプラットフォームについて拘りはありません。
現在までで試した環境としては以下の通りです。
・Windows7 + Cygwin
・Ubuntu 11.10
・CentOS 5.6、6.0

最初に環境をUbuntuとしているのは、
最低限の元ソースコンパイルがすんなり成功したのが
Ubuntuのみだったためです。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Linux 更新情報

Linuxのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。