如何在OSX上为ZeroMQ编译jzmq?

时间:2010-08-19 13:28:04

标签: macos pkg-config zeromq jzmq

尝试按照以下说明进行操作:http://github.com/zeromq/jzmq

我使用Homebrew安装了pkg-config,然后运行以下命令: ./autogen.sh 的./configure

配置失败,显示:

checking how to hardcode library paths into programs... immediate
./configure: line 15263: syntax error near unexpected token `newline'
./configure: line 15263: `    PKG_CHECK_MODULES('

8 个答案:

答案 0 :(得分:18)

更好的解决方案是:

eval `brew --config | grep HOMEBREW_PREFIX | sed 's/: /=/'`
sudo bash -c 'echo '$HOMEBREW_PREFIX/share/aclocal' >> `aclocal --print-ac-dir`/dirlist'

这将允许OSX附带的aclocal版本查找由自制软件包安装的任何宏。

答案 1 :(得分:4)

使用自制软件时,关键是警告信息:

~/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

如果查看/usr/local/Cellar/pkg-config/0.25/share/aclocal/,您会看到:

$ ls /usr/local/Cellar/pkg-config/0.25/share/aclocal/                                                            
pkg.m4

您需要将/usr/local/Cellar/pkg-config/0.25/share/aclocal/附加到/ usr / share / aclocal / dirlist,如下所示:

$ cat   /usr/share/aclocal/dirlist                                                                           
/usr/local/share/aclocal
/usr/local/Cellar/pkg-config/0.25/share/aclocal/

然后重新运行autogen和其他步骤。

答案 2 :(得分:2)

来自zeromq mailing list

  

从开发中构建0MQ   UNIX风格的OS(Linux,OS X)上的trunk   需要pkg-config   (http://pkg-config.freedesktop.org/wiki/)   安装。常规源代码构建   0MQ不需要pkg-config。   在Mac OS X上,pkg-config不会出现   与系统,所以当你尝试做       ./configure你可能会看到如下错误:

./configure: line 23913: syntax error near unexpected token `GLIB,'
./configure: line 23913: `PKG_CHECK_MODULES(GLIB, glib-2.0 gthread-2.0)'
     

要解决此问题,您需要安装   最新的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
     

然后你需要把   你的/usr/local/pkg-config-0.25/bin   $ PATH。重要的是包括   "--datarootdir=/usr/share"选项,   这将安装pkg.m4文件   /usr/share/aclocal,其中aclocal将   能够找到它。

     

然后你可以构建0MQ:

cd zeromq2 
./autogen.sh  # must do this again after installing pkg-config
./configure   # add other options here 
make 
sudo make install

编辑以反映最新的pkg-config版本(0.25)。

答案 3 :(得分:1)

我带着同样的问题来到这里,我觉得这没有得到回答。我还通过Homebrew安装了ZeroMQ和pkg-config。 /usr/local/share/aclocal/pkg.m4存在且来自pkg-config 0.25。似乎Homebrew满足了列出的要求,但它仍然失败。

答案 4 :(得分:1)

尝试在Mac OS X上编译jzmq,事实证明有点令人头疼。我按照上面的说明。我仍然得到以下错误

  

意外令牌附近的语法错误   `PKG_CHECK_MODULES

上述说明指示您将 pkgk.m4 文件复制到 / usr / share / aclocal ,但您的目录可能不同。基本上你需要 automake 搜索宏定义的目录。

_PKG_CHECK_MODULES_宏在 pkg.m4 文件中定义。此文件必须安装在appropriate directory中,由 automake 搜索。不知何故,automake在我的OS X上安装了两次,一个安装在 / usr 中,另一个安装在 / Developer / usr 中。确保你知道它正在使用哪一个。只需做哪个automake 。如果你的是 / Developer / usr ,那么将 pkg.m4 文件复制到 / Developer / usr / share / aclocal

答案 5 :(得分:1)

对我来说,问题是我没有安装pkg-config。

答案 6 :(得分:0)

在Osx Mountain Lion上我没有像PhilCalçado所说的那种dirlist文件,但是从/usr/local/Cellar/pkg-config/[version]/share/aclocal/pkg.m4/usr/share/aclocal的简单符号链接制作了这个技巧,现在jzmq构建正常。

答案 7 :(得分:0)

我为MacOS制作了一个关于jzmq构建的简单列表。

  1. 安装brew

    https://brew.sh

  2. 为jzmq建设安装工具

    brew install autoconf
    
    brew install automake
    
    brew install libtool
    
    brew install pkg-config
    
    brew install zeromq@3.2
    
  3. 下载jzmq源

    https://github.com/zeromq/jzmq源代码下载到〜/ somewhere / jzmq

  4. 添加/ 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 
    
  5. 将符号链接添加到/ 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/
    
  6. 构建jzmq-jni

    cd ~/somewhere/jzmq
    
    cd jzmq-jni
    
    
    ./autogen.sh
    
    ./configure
    
    make
    
    make install
    
  7. 向VM选项添加选项

  8. VM选项-Djava.library.path=/usr/local/lib