JavaでリモートコントロールにアクセスするためにJLircを使用しています。ソケットを介してlircに接続するためにネイティブメソッドを使用します。残念ながら、JLirc の最後の更新は 15 年前であるため、64 ビット システムはサポートされていません。
そこで、lirc に接続するためのソケットを作成する別の方法を提供してくれる JUDS に目を向けました。
標準的な C メソッドと思われるものを使用して、Java ( libunixdomainsocket-linux-x86_64.so
) を介してアクセスされるライブラリをコンパイルします。を使用して構成ファイルを作成し、を使用autoconf
してメイクファイルを作成しました./configure
。
ここで を実行するmake
と、次のエラーが表示されます。
/usr/bin/javah -sourcepath . -o com/etsy/net/UnixDomainSocket.h com.etsy.net.UnixDomainSocket
gcc -g -O2 -shared -fPIC -I /usr/include -I /usr/include/linux -I /usr/lib/jvm/java-7-openjdk-amd64/include -m32 -o libunixdomainsocket-linux-i386.so com/etsy/net/UnixDomainSocket.c
In file included from /usr/include/stdio.h:74:0,
from /usr/lib/jvm/java-7-openjdk-amd64/include/jni.h:39,
from com/etsy/net/UnixDomainSocket.h:2,
from com/etsy/net/UnixDomainSocket.c:6:
/usr/include/libio.h:306:3: error: unknown type name ‘size_t’
size_t __pad5;
この質問を読んで、含める<stddef.h>
と役立つと思います。ただし、コンパイルしようとする .c ソース ファイルに行を追加#include <stddef.h>
しても役に立ちません。
これを修正するために何ができるか考えていますか?
- JUDS をコンパイルして .so ファイルを取得する方法を見つける
- JavaでLinuxソケットに接続するためのJUDS以外の方法を見つける
- Javaを介してlircに接続するためのJLirc以外の方法を見つける