项目中需要用到java中调用systemV 消息队列,因此用了LAJP,使用它的消息队列机制来完成进程间的通信。之前程序在Linux下开发,lajp编译成了动态链接库so文件,很简单,现在mac os开发,原来的东西照搬过来肯定是不行了,需要自己重新编译得到动态链接库。
首先是LAJP的相关介绍:https://code.google.com/p/lajp/wiki/LAJP_manual
Mac OS下动态链接库的相关介绍:http://blog.csdn.net/mydo/article/details/8907498
linux下编译动态链接库是 gcc -shared -o c.so a.c b.c
而在Mac OS X下则是 gcc -dynamiclib -o c.dylib a.c b.c
另外,这里也记录一下lajp编译和使用过程,免得以后忘记。
1、首先下载lajp包:https://code.google.com/p/lajp/downloads/list
2、确认系统中java环境已经配置好了,编译过程中需要。
3、编译lajp,下载下来的包里有一个make.sh,当然,里面是linux中编译的方法,我自己修改了一下:
gcc lajp_MsgQ.c -dynamiclib -I. -I/Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home/include/darwin -o liblajpmsgq.dylib
其中用到了jdk 中的一些东西,运行以后能够生成动态链接库文件
4、按照lajp包中的提示,找到系统的java.library.path,也就是运行
System.out.println(System.getProperties().getProperty("java.library.path"));
然后在其中随便找一个路径,将liblajpmsgq.dylib放进去,修改一下权限就行
5、现在可以运行lajp包中的测试程序run_msgq.sh了,如果运行成功,那就可以使用了。