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

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

Я установил pkg-config с помощью Homebrew, а затем запускаю следующие команды: . /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('

Ответ 1

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

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

    https://brew.sh

  2. Установить инструменты для сборки jzmq

    brew install autoconf
    
    brew install automake
    
    brew install lib tool
    
    brew install pkg-config
    
    brew install [email protected]
    
  3. Загрузить исходный код jzmq

    https://github.com/zeromq/jzmq  загрузить исходный код в ~/где-то /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. Добавить опцию к параметрам виртуальной машины

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

Ответ 2

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

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

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

Ответ 3

Для 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/

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

Ответ 4

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

Здание 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).

Ответ 5

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

Ответ 6

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

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

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

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

Ответ 7

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

Ответ 8

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