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) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。