ZeroMQ 的库文件安装在标准 /usr/local/lib 位置,但如果使用 brew 安装 ZeroMQ,则会创建指向 /usr/local/Cellar/zeromq/4.2.2/lib 位置的符号链接。如果您查看该目录,您会发现libzmq.a 和libzmq.5.dylib。这两个文件都是 64 位的,必须与 32 位版本合并。
如果您从他们的网站下载 ZeroMQ,您可以更改 configure 脚本如下:
./configure CC="gcc -m32" CXX="g++ -m32" --prefix=`pwd`/i32
CC 标志和CXX 标志告诉脚本配置 32 位版本 (see here)。 prefix 标志运行pwd 命令以指示配置脚本将文件安装到当前工作目录中的用户i32 目录。 make && make install ZeroMQ 和往常一样,你应该在 ./i32/lib 目录中有 32 位库。您可以重命名这些文件以反映它们的 32 位特性:
mv ./i32/lib/libzmq.a ./i32/lib/libzmq_i32.a
mv ./i32/lib/libzmq.5.dylib ./i32/lib/libzmq_i32.5.dylib
.a 和 .dylib 文件必须合并以形成通用二进制文件,如您所见 here 和 here。首先将目录更改为找到 64 位库的位置,/usr/local/lib 或 /usr/local/Cellar/zeromq/4.2.2/lib。您可以重命名库文件以反映其 64 位特性:
mv libzmq.a libzmq_i64.a
mv libzmq.5.dylib libzmq_i64.5.dylib
通过lipo 命令合并库:
lipo -create zeromq-4.2.2/i32/lib/libzmq_i32.a libzmq_i64.a -output libzmq.a
lipo -create zeromq-4.2.2/i32/lib/libzmq_i32.5.dylib libzmq_i64.5.dylib -output libzmq.5.dylib
请注意,符号链接 libzmq.dylib -> libzmq.5.dylib 仍然有效。
就是这样!