Сборка libzmq с помощью libsodium

Редактировать начиная с ZMQ версии 4.1: Configure автоматически ищет libsodium, так что это больше не требуется. Если по какой-то причине вы хотите собрать его БЕЗ libsodium, и он уже собран и установлен, настройте libzmq с параметром --without-libsodium.


Итак, у меня проблемы со сборкой/созданием zeromq с помощью libsodium.

Я использую msys2 в качестве оболочки, в частности mingw32_shell, и zmq 4.1.0 rc1 с libsodium 1.0.1 и 32-битным mingw-w64 (gcc 4.9.2).

в настоящее время я могу скомпилировать libsodium, как это

cd .../libsodium
bash configure
make
make check
make install

и все в порядке, все тесты проходят, а библиотеки и включения попадают в папки /usr/local/, о которых, похоже, знает msys2.

затем, когда я пытаюсь построить zeromq с помощью этих команд

cd .../zeromq
bash configure --with-libsodium
make
make check
make install

я никогда не прохожу этап настройки, так как он возвращается

checking for sodium_init in -lsodium... no
configure: error: libsodium is not installed.  Install it or don't pass --with-libsodium to configure script

я пробовал методы, предложенные в этом посте - ZeroMQ не обнаруживает libsodium - но не успех.

поэтому мой вопрос таков: как мне установить местоположения для конфигурации Zeromq для поиска libsodium для обнаружения, будь то с --with-libsodium, --with-libsodium-include-dir= и --with-libsodium-lib- dir= или они «установлены» в месте, которое может найти оболочка msys2?


person CommanderBubble    schedule 10.12.2014    source источник
comment
cd .../libsodium — это просто заполнитель, указывающий, в какой папке я нахожусь.   -  person CommanderBubble    schedule 11.12.2014


Ответы (1)


Я предполагаю, что вы уже пробовали это, поскольку ссылка, которую вы предоставили, упоминает об этом:

--with-libsodium=/usr/local

Я попробовал это, и это сработало для меня. Однако я не рекомендую этого, потому что для MSYS2 чище, если /usr/local используется только для программного обеспечения MSYS2, а не для программного обеспечения MinGW-w64. Для программного обеспечения MinGW-w64 i686 «правильный» префикс для «локального» — /mingw32/local.

Я только что добавил libsodium в качестве зависимости от пакета zeromq.

Github MinGW-w64 zeromq PKGBUILD commit e32ae0

Завтра попрошу Алексея восстановить и переупаковать.

person Ray Donnelly    schedule 11.12.2014
comment
Я думал, что пробовал этот конкретный переключатель, но я только что попробовал его еще раз, и он прошел этап checking for sodium_init in -lsodium... yes. Я думаю, я, должно быть, напечатал что-то неправильно, когда пробовал это раньше... - person CommanderBubble; 11.12.2014
comment
также, чтобы не пытаться увести это от темы, но при использовании «версии» msys2 mingw32_shell и вызове make install библиотеки и т. д. все в конечном итоге попадает в /usr/local вместо /mingw32/local. Является ли это упущением с моей стороны, когда нужно указать что-то при вызове make install? - person CommanderBubble; 11.12.2014
comment
Не совсем так, по умолчанию проекты autotools используют префикс /usr/local. Мы не вносили в это никаких изменений, так как они были бы уродливыми и навязчивыми. Для этого вы должны передать --prefix=/mingw32/local для настройки. - person Ray Donnelly; 11.12.2014
comment
Новые пакеты zeromq (во множественном числе, начиная с i686 и x86_64) были загружены на тот случай, если вы захотите использовать официальные пакеты MSYS2. - person Ray Donnelly; 11.12.2014