【问题标题】:How to build an iPhone static library based on a Makefile?如何基于 Makefile 构建 iPhone 静态库?
【发布时间】:2011-05-20 15:24:40
【问题描述】:

我已经设法在命令行上使用make 在 OSX 上构建了一个静态 C 库。

我尝试使用相同的 Makefile(使用 ARCHFLAGS=-arch armv6 -arch armv7)为 iOS 构建静态库,但失败:

gcc-4.2: error trying to exec '/usr/bin/arm-apple-darwin10-gcc-4.2.1': execvp: No such file or directory

我猜它不起作用,因为我使用的是 OSX SDK make 而不是 iOS SDK 的某些部分。有什么线索吗?

注意有关相关库 (levmar) 和 Makefile 的更多详细信息,请参阅this Stack Overflow answer

【问题讨论】:

  • 你搞定了吗?我尝试添加 CC=llvm-gcc-4.2 和 ARCHFLAGS=-arch armv6 -arch armv7 -arch armv7s 但出现错误:llvm-gcc-4.2 -arch armv6 -arch armv7 -arch armv7s -O3 -funroll-loops -Wall -c -o lm.o lm.c llvm-gcc-4.2: 错误尝试执行'/usr/bin/../llvm-gcc-4.2/bin/arm-apple-darwin11-llvm-gcc-4.2': execvp:没有这样的文件或目录 llvm-gcc-4.2:尝试执行错误'/usr/bin/../llvm-gcc-4.2/bin/arm-apple-darwin11-llvm-gcc-4.2':execvp:没有这样的文件或目录 - 删除 archflags 时,它编译得很好(但对于 386)

标签: c ios build makefile


【解决方案1】:

你需要找到:

  • iOS 编译器的位置
  • 命令行调用中使用的命令行选项

最简单的方法是在 XCode 中创建一个测试 iPhone/iPad 应用程序,构建它,然后查看构建日志以了解 XCode 如何调用编译器。

【讨论】:

  • 我尝试将 cc= 指令更改为 clang,但无法为 arm 编译。得到错误 clang -arch armv7 -O3 -funroll-loops -Wall -c -o lm.o lm.c 在 lm.c:26 中包含的文件中:在 /usr/include/stdio.h:67 中包含的文件中:在从 /usr/include/_types.h:27 包含的文件:在 /usr/include/sys/_types.h:33 包含的文件中:/usr/include/machine/_types.h:34:10:致命错误:'未找到 arm/_types.h' 文件 #include "arm/_types.h" 。关于如何解决这个问题的任何想法?
【解决方案2】:

您可以创建一个 Xcode 项目并在命令行或脚本中调用 Xcode 吗?如果您不想大惊小怪地维护 Xcode 项目,一种更简单的方法可能是使用 CMake 生成 Xcode 项目,然后在命令行或脚本中调用 Xcode。这样您就可以一直停留在文本文件和脚本域中。

【讨论】:

    猜你喜欢
    • 2014-05-28
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    相关资源
    最近更新 更多