我喜欢一种编程语言,它调用clang来链接它发出的位代码文件。 (也许有更好的方法可以同时完成所有这些操作?)我一直在使用Visual Studio Code对其进行调试,并且效果很好。
我最近升级了llvm。那时,内置的osx clang抱怨无法识别位码构造。所以我用brew安装了llvm的clang部分。这看起来对编译器有效,但是无法调用链接器。
当我运行调试会话时,我会在调试窗口中得到它:
clang-6.0: error: unable to execute command: Executable \"ld\" doesn't exist!
但是,如果我从嵌入式终端运行,则可以正常工作。
似乎clang试图显式扩展ld的位置,而不是使用内置路径解析。 VSCode的C ++调试器启动环境中的某些问题导致了问题。
一些支持诊断的功能(尝试暂时将其保持简短...)。
从调试器运行时:
whereis ld works and emits...
/usr/bin/ld
env emits what looks like a wrapped environment...
PWD=/Users/<snipped>
SHLVL=1
_=/usr/bin/env
echo $PATH emits...
/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:.
And clang tries to link it runs "ld" and says...
clang-6.0: error: unable to execute command: Executable "ld" doesn't exist!
从嵌入式终端运行时:
whereis ld works and emits...
/usr/bin/ld
env emits...
a metric ton of stuff including
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin
echo $PATH emits...
/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:.
And clang tries to run "/usr/bin/ld" which works fine.
我意识到这可能是clang ld查找错误(无法正确扩展_ = / usr / bin / env ??)。不幸的是A)我对OSX环境扩展不是很了解B)是否VSCode C ++调试器使用某种标准的OSX环境柔术C)不确定如何从现有VSCode调试器会话中调试运行的clang D)不能不知道如何模拟VSCode调试器环境设置,以开始弄清毛线球。
我认为我已经升级了现在不受阻碍的OSX / XCode(使用VSCode调试器中的内置clang编译器可以再次使用)。我想无论如何我都会提出这个建议,以防我能解决问题或至少学到一些东西。
有什么想法/建议吗?
谢谢, 阿德里安