如何将Zeromq作为32位库,并将其与标准64位库合并
How to get ZeroMQ as a 32bit library and merge it with the standard 64bit library?
安装Zeromq(v4.2.2)对configure/make/install
或Homebrew的轻而易举,但只有64位版本可用。我尝试了Brew的--universal
选项,但它说不可用的通用选项,因此忽略了标志。
$ brew install zmq --universal
Warning: zeromq: this formula has no --universal option so it will be ignored!
我的问题是,如何获得Zeromq的32位库版本?
,如果我还有其他需要64位版本的项目,我该如何创建一个通用二进制版本,以便这些项目也可以正常工作?
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位版本(请参见此处)。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
文件以形成通用二进制文件,如您在此处和此处所见。首先将目录更改为找到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
请注意,Symlink libzmq.dylib -> libzmq.5.dylib
仍然有效。
就是这样!
- 将应用程序从32位移植到64位时出现问题
- 64位机器上的C++内存对齐
- qmake:检测目标位宽(32 位或 64 位)
- 如何在 64 位 vb.net Windows 应用程序中引用 32 位 dll
- Qt 5.11.2 (Clang 8.0 (Apple), 64 位), 找不到 QJSEngine 文件
- 在 64 位边界上对齐C++结构数组?
- 如何为字符串生成唯一但一致的 N 位哈希(小于 64 位)?
- 在 64 位的 c++ 中运行 mstest 测试
- 在两个线程上读/写 64 位,无互斥/锁定/原子
- 浮点数为 32 位和 64 位二进制表示形式
- 是否有 64 位等效于 GetLastInputInfo / LASTINPUTINFO?
- 所有可能的链接生成器与64位密钥
- WinAPI C++如何从 64 位应用程序加载资源
- 在 c++ 中输出 64 位整数
- 使用192/256位整数求和无符号64位整数向量的点积的最快方法
- 如何在 64 位平台上计算 32 位哈希C++?
- 使用 SysNative 在 Visual Studio 中创建 64 位应用程序
- 在 64 位整数内旋转(90°)位矩阵(最多 8x8 位)
- 64 位进程中的 AnyCPU C# DLL 无法引用 64 位C++ DLL(给出错误:无法加载文件或程序集)
- 如何将Zeromq作为32位库,并将其与标准64位库合并