[OS X] [Serial] [Java] RXTX

スポンサーリンク

RXTX

環境

Mountain Lion 10.8.2
Oracle Java SE 7u10

入手

Download – Rxtx からダウンロードします.
rxtx 2.2pre2 (prerelease) の Source: rxtx-2.2pre2.zip をダウンロードします.

Screen Shot 2013-01-07 at 3.08.40 AM

インストール

zip ファイルをダウンロードすると自動で解凍してくれています.
フォルダ名は rxtx-2.2pre2 です.
Screen Shot 2013-01-07 at 12.58.24 PM

ターミナルで rxtx-2.2pre2 に移動し,configure を実行します.

$ cd /path/to/rxtx-2.2pre2
$ ./configure

生成された Makefile を編集します.
編集する箇所は 2 つあります.

 $ vi Makefile

編集 1

(前)

 GLIBTOOL = $(SHELL) glibtool

(後)

 GLIBTOOL = $(SHELL) glibtool --tag=CC

編集 2

(前)

JAVAINCLUDEDIR = /Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/../../../Headers

(後)

JAVAINCLUDEDIR = /System/Library/Frameworks/JavaVM.framework/Versions/A/Headers

その後,make します.

$ make

下記のメッセージで終了します.

make all-am
make[1]: Nothing to be done for `all-am'.

make 後,2 点確認を行います.

  1. RXTXcomm.jar が生成されていること
  2. i386-apple-darwin12.2.1 フォルダが生成され,その中に librxtxSerial.jnilib というファイル名でライブラリが生成されていること

RXTXcomm.jar の使い方

RXTXcomm.jar は,Java プログラムを作成する際,ビルドパスに入れて使用します.

librxtxSerial.jnili の使い方

librxtxSerial.jnilib は,Java のフォルダに配置させます.
例えば,Oracle Java SE 7u10 の場合は、下記に配置させます.
($JAVA_HOME/jre/lib の下)

$ sudo cp librxtxSerial.jnilib /Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/

TIPS

gcc

make には gcc が必要ですが,OS X Mountain Lion にはデフォルトで gcc がインストールされていません.
そのため,make 時に下記のようなエラーとなります

bash: gcc: command not found.

gcc をインストールするためには,Xcode をインストールした後,Commands Line Tools をインストールする必要があります.
Command Line Tools のインストールについてはこちら.

glibtool

gcc をインストールした後,再度 configure, make を実行すると,下記のようなエラーとなります.

/bin/sh: glibtool: No such file or directory

OS X Mountain Lion にはデフォルトで glibtool がありません.
そのため、MacPorts を使用して glibtool をインストールします.

MacPorts のインストールについてはこちら.

 

MacPorts で glibtool をインストールします.
libtool をインストールすると glibtool もインストールされます.

$ sudo port install automake autoconf libtool

パスを確認してみます.

$ which glibtool
/opt/local/bin/glibtool

[参考]
http://xmlplus.sourceforge.net/install.html

glibtool の tag

glibtool をインストール後,再度 configure, make を実行すると,下記のようなエラーになります.

glibtool: compile: unable to infer tagged configuration
glibtool: compile: specify a tag with `--tag'
glibtool: compile: unable to infer tagged configuration
glibtool: compile: specify a tag with `--tag'

tag を付けろとのことです.

configure 後に生成される Makefile を編集します.

$ vi Makefile

GLIBTOOL のところに –tag=CC を追記します.

デフォルトでは下記のようになっていますが,

GLIBTOOL = $(SHELL) glibtool

下記のように追記します.

GLIBTOOL = $(SHELL) glibtool --tag=CC

[参考]
http://lists.gnu.org/archive/html/libtool/2009-07/msg00001.html

JNI 関連のパス

make の際に下記のようなエラーとなることがあります.

./gnu_io_RXTXPort.h:2:17: error: jni.h: No such file or directory

configure 後に生成される Makefile を見ると,JAVAINCLUDEDIR の設定が以下のようになっていました.
(というか,自分で設定した JAVA_HOME の設定が反映されているのですが)

JAVAINCLUDEDIR = /Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/../../../Headers

しかし,このようなパスは存在していなかったので,jni.h が実際にあるパスに変更します.

JAVAINCLUDEDIR = /Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/include

その後 make をすると今度は下記のようなエラーになります.

/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/include/jni.h:45:20: error: jni_md.h: No such file or directory

jni_md.h を find してみると,
/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers
に存在していました.

jni.h も存在しているので,そもそも最初から JAVAINCLUDEDIR として
/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers
を指定するべきでした.

再度 Makefile を編集します。

JAVAINCLUDEDIR = /System/Library/Frameworks/JavaVM.framework/Versions/A/Headers

これで make が,エラー無く通るようになります.