Compiling JZMQ on Ubuntu

2019-01-31 08:49发布

问题:

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?

回答1:

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.



回答2:

There is a fix for this now in the zeromq/jzmq repo that I added to the my frozen jzmq repo: https://github.com/halfaleague/jzmq

Now, you can just follow the directions (./autogen.sh, ./configure, make, make install).



回答3:

Why not just use the package manager to install it?

sudo apt-get install libzmq0 libzmq-dev zeromq-bin


回答4:

You need to replace classdist_noinst.stamp with classnoinst.stamp in jzmq/src/**Makefile.am**



回答5:

For Ubuntu 13.04 (Raring), I needed to run the following before the ./autogen.sh step:

sed -i 's/classdist_noinst.stamp/classnoinst.stamp/g' src/Makefile.am

I found this workaround here, and I think that this thread could be useful to anyone with that kind of problems: https://github.com/zeromq/jzmq/issues/114