Ubuntu8.10 で OpenMQ4.3 の C API サンプルプログラムをコンパイル

後々遺恨を残しそうな解決に逃げてしまったけども。

まず、rpmalien 使ってインストールした場合はディレクトリ構成が異なるので、ディレクトリを読み替える必要あり*1。これは、/usr/local 下に OpenMQ をインストールした例。

サンプルプログラムの場所は、

/usr/local/MessageQueue/mq/examples/C

で、いきなり、libstdc++6 が入ってる Ubuntu8.10 の環境だが、サンプルプログラムは libstdc++5 のライブラリを使用しているため、これをインストールしてしまう。

# aptitude install libstdc++5

・・・検証が終わったらアンインストールしといた方がいいかもしれない。ソースコードはまだ見てないが、おそらくちょっと書き換えればこういうことしなくても動くようには出来ると思う。*2

g++ をコンパイルに使用するので、無い場合はインストールしてから、下記を実行

# aptitude install g++ # g++ のインストール。
# g++ -DLINUX -D_REENTRANT -I/usr/local/MessageQueue/mq/include \
-o Producer -L/usr/local/MessageQueue/mq/lib \
-Wl,-rpath,/usr/local/MessageQueue/mq/lib \
-lmqcrt Producer.c

これでOK。(警告は出るけど。)


使用する前に、

# vi /etc/ld.so.conf.d/OpenMQ.conf
/usr/local/MessageQueue/mq/lib

と、mq の lib を追加して、

# ldconfig

しておく。


使用例。ブローカ(JMSサーバ)の場所が 192.168.1.7 、登録するキューの名前が"task.list"だったときの例。

./Producer -h 192.168.1.7 -t queue -d task.list

stdin の内容がどんどんキューに登録される。入力内容はファイルに用意しといて、リダイレクトしてやったら大量に登録できるだろう。

*1:opt の下とかにインストールされる

*2:ソース見てみた。mq の so で呼んじゃってる部分なんで、私にゃー解決は無理そうだ。