问题
Trying to follow the directions from: http://github.com/zeromq/jzmq
I installed pkg-config using Homebrew and then I run the following commands: ./autogen.sh ./configure
The configure fails with:
checking how to hardcode library paths into programs... immediate ./configure: line 15263: syntax error near unexpected token `newline' ./configure: line 15263: ` PKG_CHECK_MODULES('
回答1:
I made a simple list about jzmq building for MacOS.
Install brew
https://brew.sh
Install tools for jzmq building
brew install autoconf brew install automake brew install libtool brew install pkg-config brew install zeromq@3.2
Download jzmq source
https://github.com/zeromq/jzmq source download to ~/somewhere/jzmq
Add symbolic link to /usr/local/include
cd /usr/local/include ln -s /usr/local/Cellar/zeromq\@3.2/3.2.5/include/zmq.h ln -s /usr/local/Cellar/zeromq\@3.2/3.2.5/include/zmq_utils.h
Add symbolic linke to /usr/local/lib
cd /usr/local/lib ln -s /usr/local/Cellar/zeromq\@3.2/3.2.5/lib/libzmq.3.dylib ln -s /usr/local/Cellar/zeromq\@3.2/3.2.5/lib/libzmq.a ln -s /usr/local/Cellar/zeromq\@3.2/3.2.5/lib/libmq.dylib ln -s /usr/local/Cellar/zeromq\@3.2/3.2.5/lib/pkgconfig/
Build jzmq-jni
cd ~/somewhere/jzmq cd jzmq-jni ./autogen.sh ./configure make make install
Add option to VM options
VM options -Djava.library.path=/usr/local/lib
回答2:
A better solution is:
eval `brew --config | grep HOMEBREW_PREFIX | sed 's/: /=/'`
sudo bash -c 'echo '$HOMEBREW_PREFIX/share/aclocal' >> `aclocal --print-ac-dir`/dirlist'
This will allow the version of aclocal that ships with OSX to find any macros installed by homebrew packages.
回答3:
With homebrew, the key is the warning message:
~/code/foss/java/jzmq$ brew install pkg-config
==> Downloading http://pkg-config.freedesktop.org/releases/pkg-config-0.25.tar.gz
==> ./configure --disable-debug --prefix=/usr/local/Cellar/pkg-config/0.25 --with-pc-path=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/usr/X11/lib/pkgconfig
==> make install
Warning: m4 macros were installed to "share/aclocal".
Homebrew does not append "/usr/local/share/aclocal"
to "/usr/share/aclocal/dirlist". If an autoconf script you use
requires these m4 macros, you'll need to add this path manually.
==> Summary
/usr/local/Cellar/pkg-config/0.25: 8 files, 232K, built in 19 seconds
If you look at /usr/local/Cellar/pkg-config/0.25/share/aclocal/, you will see:
$ ls /usr/local/Cellar/pkg-config/0.25/share/aclocal/
pkg.m4
You need to append /usr/local/Cellar/pkg-config/0.25/share/aclocal/ to /usr/share/aclocal/dirlist,like this:
$ cat /usr/share/aclocal/dirlist
/usr/local/share/aclocal
/usr/local/Cellar/pkg-config/0.25/share/aclocal/
And then re-run autogen and the other steps.
回答4:
From the zeromq mailing list:
Building 0MQ from the development trunk on a UNIX style OS (Linux, OS X) requires that pkg-config (http://pkg-config.freedesktop.org/wiki/) be installed. A regular source build of 0MQ does not require pkg-config. On Mac OS X, pkg-config does not come with the system, so when you try to do ./configure you may see errors like:
./configure: line 23913: syntax error near unexpected token `GLIB,' ./configure: line 23913: `PKG_CHECK_MODULES(GLIB, glib-2.0 gthread-2.0)'
To resolve this, you need to install the latest pkg-config:
tar xzf pkg-config-0.25.tar.gz cd pkg-config-0.25 ./configure --prefix=/usr/local/pkg-config-0.25 --datarootdir=/usr/share make sudo make install
Then you will need to put
/usr/local/pkg-config-0.25/bin
on your $PATH. It is important to include the"--datarootdir=/usr/share"
option, which will install the pkg.m4 file in/usr/share/aclocal
, where aclocal will be able to find it.Then you can build 0MQ:
cd zeromq2 ./autogen.sh # must do this again after installing pkg-config ./configure # add other options here make sudo make install
Edited to reflect latest pkg-config version (0.25).
回答5:
I came here with the same question, and I don't feel this is answered. I also installed ZeroMQ and pkg-config via Homebrew. /usr/local/share/aclocal/pkg.m4 exists and comes from pkg-config 0.25. It seems that Homebrew has satisfied the requirements listed but it still fails.
回答6:
Trying to compile jzmq on Mac OS X, proved to be a bit of a headache. I followed the instructions above. I was still getting following error
syntax error near unexpected token `PKG_CHECK_MODULES
The instructions above tell you to copy the pkgk.m4 file into /usr/share/aclocal, but your directory might be different. Basically you need the dir that automake searches for macro definitions.
The _PKG_CHECK_MODULES_ macro is defined in the pkg.m4 file. This file must be installed in the appropriate directory, which is searched by automake. Somehow automake is installed twice on my OS X, one in /usr and another in /Developer/usr. Make sure you know which one it's using. Just do which automake. If yours in is /Developer/usr, then copy the pkg.m4 file to /Developer/usr/share/aclocal.
回答7:
For me, the problem was that I didn't have pkg-config installed.
回答8:
On Osx Mountain Lion I don't have the dirlist file as Phil Calçado said, but a simple symlink from /usr/local/Cellar/pkg-config/[version]/share/aclocal/pkg.m4
to /usr/share/aclocal
made the trick and now jzmq build fine.
来源:https://stackoverflow.com/questions/3522248/how-do-i-compile-jzmq-for-zeromq-on-osx