Как мне скомпилировать jzmq для ZeroMQ на OSX?

Пытаясь следовать указаниям от: http://github.com/zeromq/jzmq

Я установил pkg-config с помощью Homebrew, а затем запускаю следующие команды:./autogen.sh./configure

Сбой конфигурации с:

проверка, как жестко закодировать пути библиотек в программы... немедленно./configure: строка 15263: синтаксическая ошибка рядом с неожиданным токеном `newline'
./configure: строка 15263: `    PKG_CHECK_MODULES('

8 ответов

Решение

Я сделал простой список о сборке jzmq для MacOS.

  1. Установить варку

    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 загрузить исходный код в ~/where / 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

Варианты ВМ -Djava.library.path=/usr/local/lib

Лучшее решение:

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

Это позволит версии aclocal, поставляемой с OSX, найти любые макросы, установленные пакетами homebrew.

Для homebrew ключом является предупреждающее сообщение:

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

А затем повторно запустите автоген и другие шаги.

Из списка рассылки zeromq:

Сборка 0MQ из ствола разработки в ОС UNIX (Linux, OS X) требует установки 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).

Попытка скомпилировать jzmq на Mac OS X оказалась головной болью. Я следовал инструкциям выше. Я все еще получаю следующую ошибку

синтаксическая ошибка рядом с неожиданным токеном `PKG_CHECK_MODULES

Приведенные выше инструкции говорят вам скопировать файл pkgk.m4 в / usr / share / aclocal, но ваш каталог может отличаться. По сути, вам нужен каталог, в котором automake ищет определения макросов.

Макрос _PKG_CHECK_MODULES_ определен в файле pkg.m4. Этот файл должен быть установлен в соответствующую директорию, которую ищет automake. Каким-то образом automake устанавливается дважды на мою OS X, одну в / usr, а другую в /Developer/usr. Убедитесь, что вы знаете, какой он использует. Просто сделай, какой автопроизводитель. Если вы находитесь в /Developer/usr, скопируйте файл pkg.m4 в /Developer/usr / share / aclocal.

Для меня проблема была в том, что у меня не было установлено pkg-config.

Я пришел сюда с тем же вопросом, и я не чувствую, что на него дан ответ. Я также установил ZeroMQ и pkg-config через Homebrew. /usr/local/share/aclocal/pkg.m4 существует и поставляется из pkg-config 0.25. Кажется, что Homebrew выполнил перечисленные требования, но все еще не работает.

На Osx Mountain Lion у меня нет файла dirlist, как сказал Фил Калькадо, но есть простая символическая ссылка от /usr/local/Cellar/pkg-config/[version]/share/aclocal/pkg.m4 в /usr/share/aclocal сделал трюк и теперь JZMQ сборки хорошо.

Другие вопросы по тегам