我正在尝试从google-toolbox-for-mac设置iPhone单元测试框架。我已经创建了一个简单的单元测试并尝试构建它并收到以下错误。我的同事可以使用相同的项目并在他的机器上成功构建。对于我的生活,我无法弄清楚我可能会缺少什么。以下是我看到的错误消息。有没有人有任何见解?
找不到属于您的匹配流程
mkdir(1073)malloc:保护边缘
mkdir(1073)malloc:使用标准录像机将malloc堆栈录制到磁盘
mkdir(1073)malloc:启用涂鸦检测模块以释放块
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 Abort trap mkdir“$ CFFIXED_USER_HOME”
命令/ bin / sh失败,退出代码为134
答案 0 :(得分: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
开头的代码部分移至export DYLD_ROOT_PATH
部分(以及export CFFIXED_USER_HOME
行)之前。
BTW SDK似乎有系统库libc,libSystem等的包装版本,它们检查iPhone上是否有可用的系统调用。这就是上面“iPhone模式”的意思。
答案 1 :(得分:0)
听起来你的同事可能正在使用接受$ UNIX2003符号装饰的旧版iOS SDK。当我尝试使用为早期操作系统编译的libCURL版本时,我遇到了类似的问题。最后,我不得不使用最新的SDK工具重建libCURL(详情请参阅http://www.creativealgorithms.com/blog/content/building-libcurl-ios-42),但您可以通过使用与同事相同的SDK(如果它仍然可用)来解决它。 / p>