Search code examples
ubuntumakefilezeromqjzmq

Compiling JZMQ on Ubuntu


Hello all I'm attempting to follow the directions located at: https://github.com/nathanmarz/storm/wiki/Installing-native-dependencies for installing Zero MQ as a dependency for Storm on a Ubuntu 12.04 machine. However when trying to run the make command I get the following error

Making all in src
make[1]: Entering directory `/home/localadmin/jzmq/src'
make[1]: *** No rule to make target `classdist_noinst.stamp', needed by `org/zeromq/ZMQ.class'.  Stop.
make[1]: Leaving directory `/home/localadmin/jzmq/src'
make: *** [all-recursive] Error 1

Does anyone have any idea where this error stems from and how I would be able to correct it?


Solution

  • Apparently compiling JZMQ on Ubuntu 12.04 is a little bit more involved than I realized. However I took the time to write out the solution that I found. You can find it at: Installing Storm's Native Dependencies on Ubuntu 12.04. For time's sake here are the instructions:

    1. You’ll need to ensure that a few packages are installed first: build-essential, uuid-dev, libtool, git, autoconf, openjdk-6-jdk
    2. Create a JAVA_HOME variable that point the the jdk you just installed. Should be in the /usr/lib/jvm directory

      JAVA_HOME=/usr/lib/jvm/(your jdk folder); export JAVA_HOME

    3. Run the following commands for installing Zero MQ:

      wget http://download.zeromq.org/zeromq-2.1.7.tar.gz
      tar -xzf zeromq-2.1.7.tar.gz
      cd zeromq-2.1.7
      ./configure
      make
      sudo make install
      
    4. Download JZMQ and navigate to the the src directory

      git clone https://github.com/nathanmarz/jzmq.git
      cd jzmq
      cd src
      
    5. Once in the src directory run the touch command to create a file and then redefine the classpath.

      touch classdist_noinst.stamp
      CLASSPATH=.:./.:$CLASSPATH javac -d . org/zeromq/ZMQ.java org/zeromq/ZMQException.java org/zeromq/ZMQQueue.java org/zeromq/ZMQForwarder.java org/zeromq/ZMQStreamer.java
      

      6.Navigate back to the /jzmq and run make

      cd ..
      ./autogen.sh 
      If you get this error "autogen.sh: error: could not find pkg-config.pkg-config is required to run autogen.sh", then install pkg-config. In Ubuntu sudo apt-get install pkg-config and again run the above command.
      ./configure
      make
      sudo make install
      

    Parts of this were stitched together from the Storm - Installing Native Dependencies and Tijun - How to build jzmq in Mac OS X Lion. Thanks guys for putting your pieces of the puzzle up I just stitched them together.