【问题标题】:iOS conditional link static libraryiOS 条件链接静态库
【发布时间】:2011-11-28 15:25:43
【问题描述】:

我有一个为 armv7 和 i386 编译的胖静态库。在我的 iPhone/iPad 项目中,一切正常,但我只能在 armv7 设备上安装我的应用程序,所以 iPhone 3gs 及更高版本...

有一种方法可以在 armv6 上运行我的项目,这样我就可以将它安装在 ipod touch 和旧 iphone 版本上(如果我禁用 armv7 库)。

我试试这个:

#ifdef _ARM_ARCH_7
... //include and use of armv7 library
#else
... //not include armv7 library
#endif

但是当我编译我的项目时出现链接错误...

命令 /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang++ 失败,退出代码为 1

所以有一种方法可以在所有类型的设备上运行我的应用程序,但在为 armv7 编译时链接特定库???

感谢您的帮助!

【问题讨论】:

  • 您今天如何在项目中包含静态库?您是在项目设置中使用-l(例如-l libmyFatLibrary)还是将静态库拖到要链接的库和框架的文件列表中?
  • 我将胖库拖到文件列表中......并且工作正常。我尝试使用 -l 选项?

标签: ios xcode linker static-libraries armv7


【解决方案1】:

您需要弱链接该库。打开构建设置并找到其他链接器标志。您需要添加两个条目,第一个是“-weak_library”,第二个是库文件的路径(您可能需要搜索传递给链接器的内容以找到这是什么)。

它们需要按这个顺序排列,因为这个列表会按照它们出现的顺序变成链接器的参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-14
    • 2013-01-20
    • 2012-06-19
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多