iphone - 为 iPhone 编译 C lib

标签 iphone xcode compilation configure zeromq

我正在尝试编译 ZeroMQ C 绑定(bind)以便能够在 iPhone 上使用它,这是我的配置选项:

./configure --host=arm-apple-darwin --enable-static=yes --enable-shared=no CC=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc -4.2.1 CFLAGS="-pipe -std=c99 -Wno-trigraphs -fpascal-strings -O0 -Wreturn-type -Wunused-variable -fmessage-length=0 -fvisibility=hidden -miphoneos-version-min=3.1。 2 -gdwarf-2 -mthumb -I/Library/iPhone/include -isysroot/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk -mdynamic-no-pic"CPP=/Developer/Platforms/iPhoneOS .platform/Developer/usr/bin/cpp AR=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar AS=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/as LIBTOOL=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool STRIP=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/strip RANLIB=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ranlib

它实际上配置和编译得很好,但是当我将它添加到 Xcode Frameworks 部分时,我收到警告:ld: warning: in/path/to/app/libzmq.a, file wasbuilt for unsupported file format这不是正在链接的架构(armv7),并且有很多符号未找到错误。

如果我将当前事件架构从armv6更改为armv7,警告消息会将其更改为armv6。 我做错了什么?

谢谢, 丹

最佳答案

听起来你正在为 iPhone 构建一个通用的 armv6/armv7 二进制文件(这是默认的,所以这是有道理的)。这意味着您需要构建一个通用库来链接。构建两个库,然后使用lipo将两者结合起来。

例如,构建armv6 并将其放置在armv6/libfoo.a 中,将armv7 放置在armv7/libfoo.a 中。然后运行

lipo -arch armv6 armv6/libfoo.a -arch armv7 armv7/libfoo.a -output libfoo.a -create

创建通用库libfoo.a

关于iphone - 为 iPhone 编译 C lib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3610107/

相关文章:

iPhone - 加载新 View 和释放的对象

iphone - iPhone 导航栏的默认 UIColor

ios - 在代码中更改纵横比值

ios - 如何在 Xcode 中存档/导出框架?

java - 找不到标志。虽然我看不出有什么问题

iOS:是否有 Apple Store 可接受的方法来检查屏幕是否打开/关闭?

iphone - ios 4.x 和 5 之间的兼容性?

android - 有没有办法在 Eclipse 中编译 GnuTLS?

c# - 为什么匿名类型没有索引器属性?

iphone - 无法在 TextView 中键入文本