自制 llvm build 找不到 iOS 包含 _wordexp 符号的模拟器库

homebrew llvm build cannot find iOS simulator library containing _wordexp symbol

我正在研究 touching up homebrew's (OS X package manager) llvm formula。不幸的是,我添加的某些部分以我无法弄清楚的方式破坏了构建。

tl;dr ld 要求一个包含 iOS 模拟器的 _wordexp 符号的库,我完全不知道它在哪里,如果它存在的话

当编译器尝试 link iOS 模拟器的 address sanitizer dylib 时,我的编译始终失败。

复制步骤(OS 据我所知只有 X,手头没有 *nix 系统):

此时在我的机器上,弹出如下内容:

Undefined symbols for architecture x86_64:
  "_wordexp", referenced from:
      _wrap_wordexp in asan_interceptors.cc.o
      substitution_wordexp in asan_interceptors.cc.o
     (maybe you meant: _wrap_wordexp)
ld: symbol(s) not found for architecture x86_64

我认为这只是将另一个文件夹添加到 linker 搜索路径的问题。原来没那么简单:


我错过了什么?鉴于这个错误似乎不是特别常见,所以有可能是我的机器,但我希望这种可能性很小,因为我这个周末擦除并重新安装了我的电脑。

(OS X 10.11,Xcode/CLT 7.1,2012 年年中 Retina pro)

如果需要更多信息,我很乐意提供。

编辑 1:简化 link.txt 修复。原来为 clang++ 设置 sysroot 并没有为 ld

这样做

原来错误是自制软件处理编译器标志的方式造成的。这个问题和其他一些问题已经得到解决,所以这可能不再有用了。


对于那些好奇这到底是怎么坏的,自制软件试图改变编译器标志来抑制警告并创造更一致的构建体验。其中一项更改是删除任何 -isysroot-system 标志,因为这是在稍后阶段由自制软件本身添加的。不幸的是,homebrew 假定只使用 OS X SDK,因此当构建预期使用 iPhone 模拟器 SDK 构建某些东西时,它被指向 OS X SDK。