ld.lld -v
输出包含“与 GNU 链接器兼容”的消息,以解决GNU Libtool 使用的检测机制问题,此问题在软件兼容性和我们自己的“用户代理”问题中有描述。- 最新的
m4/libtool.m4
继续依赖GNU
检查,如AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU lds only accept -v. case
$LD -v 2>&1 </dev/nullin *GNU* | *'with BFD'*) lt_cv_prog_gnu_ld=yes ;; *) lt_cv_prog_gnu_ld=no ;; esac])
。 - 基于检查的配置是一个有价值的工具,可确保软件在未来仍能正常运行,但此示例突出了过于具体的检查如何导致意外后果。
- Libtool 可利用
-v
来检查某些选项是否可用。 - Meson 中
mesonbuild/linkers/detect.py:guess_win_linker
通过检查--version
输出确定 LLD 调用是针对 ELF 还是 PE/COFF,但之前的检查过于严格,最新 Meson 已放宽检查,但链接器检测仍存在--target=
未被考虑的问题。 - Linux 内核的
scripts/ld-version.sh
脚本用于检测链接器版本,2014 年引入,最初用于检查与 GCC LTO 的 GNU ld 兼容性,后也可处理 LLD 版本,但处理含逗号后缀的版本有困难。 - llvm-nm 和 llvm-objcopy 也声称与 GNU 兼容。
- 探讨了 GNU ld 中
-v
、-V
和--version
的细微差异,之前ld.lld
中-V
是--version
的别名导致某些目标使用gcc -v -fuse-ld=lld
时出现问题,已调整为-V
是-v
的别名。GCC 有类似-v
和--version
行为,但无-V
,Clang 的 GNU 驱动可模拟 GCC 4.2.1 并通过-fgnuc-version=
更改版本。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。