I tested this in Ubuntu 13.04, but essentially this should work in any Ubuntu distribution. First install the libtool, autoconf, automake, uuid-dev, e2fsprogs packages.
sudo apt-get install libtool autoconf automake uuid-dev e2fsprogs
Then clone the 0mq source using,
git clone git://github.com/zeromq/libzmq.git
Then go in to the libzmq directory and run the following commands in order.
./autogen.sh ./configure make sudo make install ldconfig -v
Then run the following command and check the output.
ls -al /usr/local/lib/libzmq.*
The output should be similar to,
-rw-r--r-- 1 root root 7082022 ජූනි 7 14:16 /usr/local/lib/libzmq.a -rwxr-xr-x 1 root root 947 ජූනි 7 14:16 /usr/local/lib/libzmq.la lrwxrwxrwx 1 root root 15 ජූනි 7 14:16 /usr/local/lib/libzmq.so -> libzmq.so.3.0.0 lrwxrwxrwx 1 root root 15 ජූනි 7 14:16 /usr/local/lib/libzmq.so.3 -> libzmq.so.3.0.0 -rwxr-xr-x 1 root root 2876918 ජූනි 7 14:16 /usr/local/lib/libzmq.so.3.0.0
Now you should install the Java bindings for 0mq (in order to use omq from Java of course!). First check whether the JAVA_HOME environment variable is correctly set using,
echo $JAVA_HOME
This should output the location that you have installed Java. If it’s giving an empty output, then set it manually using
export JAVA_HOME=/location/to/your/java/installation
In my case the command is,
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_17
Then clone the java bindings for 0mq using,
git clone https://github.com/zeromq/jzmq.git
now go inside the jzmq folder. Now same as before, run the following commands in order.
./autogen.sh ./configure make sudo make install
Now run the following command to verify the installation.
ls -al /usr/local/lib/*jzmq* /usr/local/share/java/*zmq*
The output should be like the following.
-rw-r--r-- 1 root root 535266 ජූනි 7 14:40 /usr/local/lib/libjzmq.a -rwxr-xr-x 1 root root 998 ජූනි 7 14:40 /usr/local/lib/libjzmq.la lrwxrwxrwx 1 root root 16 ජූනි 7 14:40 /usr/local/lib/libjzmq.so -> libjzmq.so.0.0.0 lrwxrwxrwx 1 root root 16 ජූනි 7 14:40 /usr/local/lib/libjzmq.so.0 -> libjzmq.so.0.0.0 -rwxr-xr-x 1 root root 242784 ජූනි 7 14:40 /usr/local/lib/libjzmq.so.0.0.0 -rw-r--r-- 1 root root 40618 ජූනි 7 14:40 /usr/local/share/java/zmq.jar
Notice the last line, that’s the newly created jar that connects to 0mq. Now you can use 0mq inside a Java programme.
Troubleshooting
If you get any of the following errors (which I got) when building the jar, export the mentioned system variables in the terminal to resolve them.
error –
checking for javah… no
configure: error: cannot find javah
solution –
export JAVAH=/location/to/your/java/installation/bin/javah
ex – export JAVAH=/usr/lib/jvm/jdk1.7.0_17/bin/javah
error –
checking for jar… no
configure: error: cannot find jar
solution –
export JAR=/location/to/your/java/installation/bin/jar
ex – export JAR=/usr/lib/jvm/jdk1.7.0_17/bin/jar
(Most of the content of this guide is based up on https://github.com/mslinn/zeromq-demo#ubuntu )
I guess the errors occurred in your case because you might have forgot to set the environment variable for JAVA_HOME in the first place. I’m saying that because I didn’t get any error.
cheers
Even I thought that I hadn’t set the environmental variables. But when I checked them, they were properly set.
Hi,
I followed this post to install and build zeromq. Everything worked properly but when i tried to run a sample code in eclipse. It says the import of zeromq library cannot be resolved. Any idea where I have gone wrong? I was guessing its something to do with classpath or java_home but my java_home is set properly .
Thanks,
Ashwini
Hi Ashwini,
Did you try adding the zmq jar which is in /usr/local/share/java/zmq.jar to the used libraries in eclipse?
Hi , thanks for your quick response.
yes i did that , i added the jar and added it to build path. When i run the code it gives me
java.lang.UnsatisfiedLinkError:no jzmq in java.library.path
Hi,
Use the following parameter when running the program.
-Djava.library.path=/usr/local/lib
i run in eclipse. Where exactly do i add that?
Hi,
Create a run configuration in eclipse. (Run -> Run configurations). Add a new Java application configuration. Under the arguments tab, add it as a VM argument.