问题标签 [lld]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
10317 浏览

rust - 如何更改默认的 rustc / Cargo 链接器?

我想让 rustclld用作链接器,而不是ld在特定的 crate 中。所以我.cargo/config在我的项目目录中创建了以下内容:

这会导致链接器错误:

rust-lld. 如果我设置linker = "ld"(这应该是默认值,对吗?),我会得到

我试图手动解决所有丢失的库(使用-C link-arg=--library-path=/usr/lib/x86_64-linux-gnu等),但它只会导致错误的链接和段错误的二进制文件。

有趣的是,如果我/usr/bin/ld用符号链接替换/usr/bin/ld.lld,它会很好用(没有错误,从编译的二进制文件中我看到它确实与 链接lld)。但是,我不想制作lld系统范围的链接器,我只想在特定的 Rust crate 中使用它。

那么更改默认 rustc 链接器的正确方法是什么?

0 投票
0 回答
153 浏览

linker - 在调试部分周围添加符号会导致二进制文件的大小增加三倍

我想在每个调试信息部分周围添加一个开始和结束符号,以便我可以从我的程序中访问它们。我尝试了以下方案:

但这会导致每个部分(包括 .text、.rodata 等)和生成的二进制文件的大小增加三倍。这可能是什么原因造成的?正如您从下面的转储中看到的,调试信息包含在这两种情况下,因此这不是导致大小增加的原因。

我正在使用 Zig 和 LLVM 工具链。

链接到整个链接脚本。链接到没有链接脚本修改的二进制转储,链接到带有修改的转储。

0 投票
1 回答
2159 浏览

c++ - 使用 GCC 编译但与 LLVM LLD 链接时,LTO 是否有效?

我最近发现了 LLVM 的链接器,它因链接lld速度非常快而受到称赞。事实上,我对其进行了测试,结果非常棒,与gold.

但是,在谈到链接时优化时,我的知识是有限的。据我通过阅读互联网上的资料了解到,目标文件中产生了一些额外的代码,代表一些内部编译器结构,然后在链接阶段使用。因此,我担心的是链接时优化(及其好处)是否受此编译器/链接器组合的影响。我将不胜感激有关此事的一些解释!

我使用gcc了版本9.2.0lld版本10.0.0

我用于生成目标文件的命令:

对于链接:

0 投票
2 回答
835 浏览

linux - 有没有办法在 ELF 二进制文件开始执行时自动设置环境变量?

我有一个mytest使用 Clang 和 bfd/lld 创建的二进制可执行文件,为了让它正常工作,我必须将环境变量传递ASAN_OPTIONS="use_sigaltstack=1"给它,但我想避免每次我想运行时都必须手动输入从命令行执行。

当然,我可以创建一个包装脚本,但这会增加更多的复杂性。

有没有办法在创建二进制文件时将环境变量及其值附加到二进制文件,以便在执行开始时自动设置它?

在我的代码中设置环境变量为时已晚,因为 Asan 在我的代码开始运行之前读取了环境变量。

0 投票
1 回答
2049 浏览

c++ - 如何在 Windows 上将 lld 与 CMake 一起使用?

我正在尝试使用 CMake 和 clang + lld ( http://releases.llvm.org/ ) + mingw ( https://sourceforge ) 编译 SDL2 ( https://www.libsdl.org/download-2.0.php ) .net/projects/mingw-w64/ ) Windows 10 上的标头。尽管我付出了很多努力,但我似乎无法让 CMake 在 mingw ld 链接器上使用 lld 链接器。

我目前使用批处理文件构建 sdl2:

我试过无济于事:

任何帮助将不胜感激。

0 投票
1 回答
342 浏览

hyperlink - 使用 Clang 和 LLVM ELF ld.LLD 链接器时,如何从可执行文件中删除符号?

我正在使用 Clang 9.0.0 构建并与 ld.lld 链接器链接

但是,与使用通常的 GCC 链接器 LD 不同,此选项(--strip-all 或 -s)无法识别

谁能建议我应该做些什么来去除符号?

(我的发布模式 hello_world.exe 大小对于 GC 是 15 kb,但对于 Clang 是 230 kB :-( 这可能会产生一些不利影响而没有任何好处)。

这不是 ld.lld 的选项吗?

谢谢

0 投票
1 回答
1146 浏览

c++ - lld-link 错误:在 Windows10 上尝试与 libcmt.lib 链接时没有输入文件

我正在编译一个非常简单的main.c

我正在使用以下选项进行编译:

我得到我main.o的输出。现在我使用lld-link.exe以下选项进行链接:

我收到以下错误:lld-link: error: no input files

但是很明显main.o,最后一个参数是你放置输入文件的地方。还要记住,我必须链接反对libcmt.lib才能获得mainCRTStartup函数的符号。

0 投票
0 回答
126 浏览

c - 未安装 Visual Studio 的 mainCRTStartup

有没有办法在没有安装 Visual Studio 的情况下链接 mainCRTStartup?我的 Visual Studio 安装中有 libcmt.lib,它适用于在我的计算机上进行链接。但是,我希望能够在无需安装 Visual Studio 的情况下进行构建和链接。

我在 Windows 10 上使用 Clang 和 LLD 9.0.0。

0 投票
1 回答
293 浏览

windows - 在 Windows 下构建 chromium:ninja -libpath 无法识别空间(即使在引用路径中!)

遵循此处 https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md#Build-Chromium的所有先决条件和说明

当我终于到达建筑部分时:

autoninja -C out\Default chrome

我收到错误:

Files\SQLXML:没有这样的文件或目录 lld-link:错误:lib 失败

显然 -libpath 参数未正确解析,尽管它在引号中:

"-libpath:C:\Program Files\SQLXML 4.0\bin\"

失败的命令:

忍者:进入目录 `out\Default' [18 个进程,68/41674 @ 17.3/s:3.9...ic_annotations/dynamic_annotations.lib

失败:obj/base/third_party/dynamic_annotations/dynamic_annotations.lib ninja -t msvc -e environment.x64 -- ....\third_party\llvm-build\Release+Asserts\bin\lld-link.exe /lib /nologo "-libpath:D:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\ATLMFC\lib\x64" "-libpath:D:\Program Files (x86)\ Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\lib\x64" "-libpath:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "- libpath:C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\ucrt\x64" "-libpath:C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\嗯\x64" "-libpath:D:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\ATLMFC\lib\x86" "-libpath:D:\Program Files (x86)\Microsoft VisualStudio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\lib\x86" "-libpath:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\嗯\x86" "-libpath:C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\ucrt\x86" "-libpath:C:\Program Files (x86)\Windows Kits\10\ lib\10.0.18362.0\um\x86" "-libpath:C:\Program Files (x86)\SQLXML 4.0\bin\" "-libpath:C:\Program Files\SQLXML 4.0\bin\" /ignore:4221 / llvmlibthin /OUT:obj/base/third_party/dynamic_annotations/dynamic_annotations.lib @obj/base/third_party/dynamic_annotations/dynamic_annotations.lib.rsp"-libpath:C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\um\x86" "-libpath:C:\Program Files (x86)\SQLXML 4.0\bin\" "-libpath :C:\Program Files\SQLXML 4.0\bin\" /ignore:4221 /llvmlibthin /OUT:obj/base/third_party/dynamic_annotations/dynamic_annotations.lib @obj/base/third_party/dynamic_annotations/dynamic_annotations.lib.rsp"-libpath:C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\um\x86" "-libpath:C:\Program Files (x86)\SQLXML 4.0\bin\" "-libpath :C:\Program Files\SQLXML 4.0\bin\" /ignore:4221 /llvmlibthin /OUT:obj/base/third_party/dynamic_annotations/dynamic_annotations.lib @obj/base/third_party/dynamic_annotations/dynamic_annotations.lib.rsp

Files\SQLXML:没有这样的文件或目录

lld-link:错误:lib 失败

0 投票
1 回答
825 浏览

haskell - 堆栈构建失败并出现 LLD 错误

我正在尝试使用stack(特别是)构建一些 Haskell 包haskell-ide-enginehlint但它们都失败并出现许多ld.lld错误消息,所有错误消息都与R_X86_64_32S重定位有关,例如:

我尝试配置stack为使用不同的链接器(使用ghc-options标志),但我无法让它工作,它总是使用lld.

有谁知道我可以如何更改stack链接器,或以其他方式修复错误?

谢谢!