3

我正在尝试从 google-toolbox-for-mac 设置 iPhone 单元测试框架。我创建了一个简单的单元测试并尝试构建它并收到以下错误。我的一位同事可以使用相同的项目并在他的机器上成功构建。对于我的一生,我无法弄清楚我可能会错过什么。以下是我看到的错误消息。有没有人有任何见解?

未找到属于您的匹配进程

mkdir(1073) malloc:保护边缘

mkdir(1073) malloc:使用标准记录器将 malloc 堆栈记录到磁盘

mkdir(1073) malloc:启用涂鸦以检测 mod 以释放块

mkdir(1073) malloc:进程 1059 不再存在,堆栈日志从 /tmp/stack-logs.1059.mkdir.QDKY28.index 中删除

mkdir(1073) malloc:堆栈日志被写入 /tmp/stack-logs.1073.mkdir.KrpE2L.index

检测到尝试调用 iPhone 上不存在的系统库中的符号:从函数调用 getopt$UNIX2003 ??? 在图像 mkdir 中。

如果您在 gdb 中运行模拟器二进制文件时遇到此问题,请确保首先“设置 start-with-shell off”。

/Developer/google-toolbox-for-mac/UnitTesting/RunIPhoneUnitTest.sh:第 150 行:1073 中止陷阱 mkdir "$CFFIXED_USER_HOME"

命令 /bin/sh 失败,退出代码 134

4

2 回答 2

2

这似乎是 google-toolbox/UnitTesting/RunIPhoneUnitTest.sh 脚本中的错误。行后的所有内容: export DYLD_ROOT_PATH="$SDKROOT" 在“iPhone 模式”下运行。在我们较旧的 32 位 iMac 上 /bin/mkdir 似乎使用了 iPhone 上不可用的 getopt$UNIX2003 系统调用。所以以下行失败: mkdir "$CFFIXED_USER_HOME". 在较新的 64 位 Mac 上 /bin/mkdir 与 iPhone 模式兼容。

if [ $GTM_DISABLE_USERDIR_SETUP -eq 0 ]; then一个解决方法是简单地移动以to开头的代码export DYLD_ROOT_PATH部分(以及该export CFFIXED_USER_HOME行)之前。

顺便说一句,SDK 似乎有系统库 libc、libSystem 等的包装器版本,它们检查所使用的系统调用在 iPhone 上是否可用。这就是上面“iPhone 模式”的含义。

于 2010-12-22T13:35:12.183 回答
0

听起来您的同事可能正在使用接受 $UNIX2003 符号装饰的旧版本的 iOS SDK。当我尝试使用为早期操作系统编译的 libCURL 版本时,我遇到了类似的问题。最后,我不得不使用最新的 SDK 工具重建 libCURL(详细信息:http ://www.creativealgorithms.com/blog/content/building-libcurl-ios-42 ),但您可以通过以下方式解决它使用与您的同事相同的 SDK(如果它仍然可用)。

于 2010-12-09T20:36:07.470 回答