在 Scons 中将“-W1,-rpath=\$ORIGIN”替换为“-W1,-rpath,\$ORIGIN”

Posted

技术标签:

【中文标题】在 Scons 中将“-W1,-rpath=\\$ORIGIN”替换为“-W1,-rpath,\\$ORIGIN”【英文标题】:Replacing "-W1,-rpath=\$ORIGIN" with "-W1,-rpath,\$ORIGIN" in Scons在 Scons 中将“-W1,-rpath=\$ORIGIN”替换为“-W1,-rpath,\$ORIGIN” 【发布时间】:2021-12-13 16:43:21 【问题描述】:

我正在尝试使用他们提供的 SConstruct 文件在带有 Scons 的 Mac 上安装 Openloops。在安装过程中,我收到以下错误:

ld: unknown option: -rpath=$ORIGIN
collect2: error: ld returned 1 exit status
scons: *** [lib/librambo.dylib] Error 1
scons: building terminated because of errors.

我已经知道如何解决该错误,因为在 Mac OS 中,您必须将 rpath 后面的等号替换为逗号。但是,这个命令不是由我执行的,而是由 Scons 脚本执行的。有谁知道我是否可以告诉 scons 解析逗号而不是等号?或者,我可以告诉 bash 或 zsh 以某种方式使用 -rpath, 别名 -rpath= 吗?

【问题讨论】:

我们可能希望对此进行更多探索,因为通常 scons 会检测并执行特定于平台的代码来避免这种事情。然而,有时项目的构建系统会被构建(无意)以解决这个问题。 这个问题可能源于在 macOS 上运行 gcc 实际上运行 clang.. "% gcc --version 配置为:--prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/4.2.1 Apple clang 版本 13.0.0 (clang-1300.0.29.3) 目标:x86_64-apple-darwin20.6.0 线程模型:posix InstalledDir:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin" 不要把答案放在问题中。而是将其放在答案中。 我确实在通过自制软件安装的 gcc 中使用 gfortran 安装,而不是 clang。 【参考方案1】:

请尝试将以下内容添加到 SConstruct

RPATHPREFIX="-rpath,"

在文件的这一部分: https://gitlab.com/openloops/OpenLoops/-/blob/master/SConstruct#L381

【讨论】:

【参考方案2】:

在 scons-local-3.0.x/Scons 的安装路径中,我编辑了 Environment.py、Tool/gnulink.py 和 Tool/gdc.py 文件,并将 -rpath= 替换为 -rpath,,出现字符串每个文件中一次。

【讨论】:

以上是关于在 Scons 中将“-W1,-rpath=\$ORIGIN”替换为“-W1,-rpath,\$ORIGIN”的主要内容,如果未能解决你的问题,请参考以下文章

如何卸载scons?

SCons的使用

linux自动化构建工具-scons指南

Scons - 使用带有 scons 缓存的自定义预处理器

scons 简单入门

WSL + Scons:无此类文件或目录