libsodium,zeromq编译问题

使用msvc编译libsodium

生产DLL需要定义下面的宏。

export CPPFLAGS=-DSODIUM_DLL_EXPORT
./configure --host=i686_pc_cygwin --enable-shared --disable-static

在Makefile中删除-DHAVE_PID=1
删除
-DHAVE_EMMINTRIN_H=1
-DHAVE_TMMINTRIN_H=1
-DHAVE_SMMINTRIN_H=1
删除src/libsodium/Makefile中的
include …

在platform.hpp中增加

#define HAVE_WINDOWS_H 1
#define ZMQ_HAVE_WINDOWS 1

使用msvc编译zeromq

export CPPFLAGS='-DDLL_EXPORT -DFD_SETSIZE=4096 -DZMQ_USE_SELECT -DHAVE_LIBSODIUM'
export sodium_CFLAGS='../libsodium/build-msvc/include'
export sodium_LIBS='../libsodium/build-msvc/lib/libsodium.lib'
export msvc_LDFLAGS='../libsodium/build-msvc/lib/libsodium.lib'
./configure --host=i686-pc-cygwin --enable-shared --disable-static --with-poller=select --with-libsodium

在编译时,因为libtool要建立一个符号链接libzeromq.lib导致库文件被破坏。在libtool中找到

    # Create links to the real library.
    for linkname in $linknames; do
      if test "$realname" != "$linkname"; then
        func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
      fi
    done

注释掉就好。

ndk编译时参数不能使用空格

-Dversion=”libsodium 1.0.6”改为”libsodium-1.0.6”通过

ndk编译zeromq

需要使用独立的ndk编译环境,可以使用下面的命令产生

$NDK/build/tools/make-standalone-toolchain.sh --platform=android-3 --install-dir=arm-ndk --arch=arm --toolchain=arm-linux-androideabi-4.8

编译过程中将Makefile中的-Werror删除,这个将所有的警告当错误处理。

如果指定NDK_TOOLCHAINS环境变量,并且不以NDK环境变量为开头,那么就认为是独立的编译环境。不加–sysroot参数。

你可能感兴趣的:(open,source)