我试图编译ZeroMQ的沸点,以能够使用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的框架部分,我得到警告:ld: warning: in /path/to/app/libzmq.a, file was built for unsupported file format which is not the architecture being linked (armv7)和大量的符号没有发现错误

如果我改变当前活动架构从用于ARMv6到ARMv7的,警告消息将其改为ARMv6的。 我在做什么错了?

谢谢, 丹

有帮助吗?

解决方案

这听起来像你正在构建为iPhone通用的ARMv6 / ARMv7的二进制文件(这是默认的,这样才有意义)。这意味着,你需要建立一个通用的库来链接。构建的两个文库,然后使用lipo到两个

结合

例如,构建的ARMv6一个,并将其放置在armv6/libfoo.a,并且在armv7/libfoo.a用于ARMv7之一。然后,运行

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

以创建通用库libfoo.a

其他提示

由于从ld警告消息,我的猜测是你不编译库正确的平台。并给予你使用configure,我的猜测是你试图编译的Xcode的图书馆外,然后把它变成后来的Xcode在其链接。

也许你可以尝试运行configure设置您的头,但里面做的Xcode实际编译步骤?

有这里有很多相关的问题对SO有关编译的第三方为iPhone项目中使用的(外部)C或C ++库。

对于iPhone创建静态库

胆怯:需要帮助编译该库为iPhone

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top