问题标签 [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 投票
1 回答
30 浏览

cmake - LLVM 的 lld 不知道 --dll-search-prefix=cyg

好消息是,我能够从 Windows / Cygwin 下的分支 llvmorg-12.0.1 编译和安装 Clang 和 lld。它可以很好地编译我的代码,但链接器说:

我想知道,因为我认为 lld 采用与 ld 相同的 cli 参数。

我正在开发一个包含 gtest 并使用 cmake 框架的项目。用于测试的文件链接为库,然后再次链接测试,最后再次链接 gtest。使用 ggc 11.2.0 时代码正在链接和工作

0 投票
1 回答
70 浏览

assembly - 模具和 lld 没有正确链接到 libc

我一直在 linux 上编写一些 x64 程序集——确切地说它是不相关的——我遇到了一个奇怪的问题。在我的汇编代码中,我已将其声明printf为外部标签,并使用 x64 Linux C 调用约定来调用它。相关位看起来像这样:

使用 组装nasm -f elf64 file.asm,我得到一个正确的目标文件。与 GNU ld, 链接ld -o file -lc file.o,我得到了一个可以正确运行并产生预期输出的可执行文件。到目前为止,一切都很好。

当我尝试对模具和 lld 做同样的事情时,奇怪的一点就出现了。对于初学者来说,他们都不知道在哪里可以临时找到 libc。这可以; 我问 GCC 在哪里可以找到 libc(gcc --print-file-name libc.so-或者libc.a,我的系统两者都在同一个目录中),答案是/usr/lib. 因此,我尝试再次将我的目标文件与模具和 lld 链接起来,就像这样.. mold/ld.lld -o file -L/usr/lib -lc file.o..它们都链接没有任何报告的错误。但是当我运行生成的可执行文件时,它们都出现了段错误。我还没有调查 LLVM ld 版本,但我将模具版本放入 gdb 并发现发生段错误是因为libc printf 实现中的代码执行跳转到0x00...00.

我的问题很简单:出了什么问题,我该如何解决?两者都是信誉良好的链接器,所以我确定问题出在我身上,但我不清楚我做错了什么。我试图研究这个问题,但是,在我公认的粗略搜索中,我找不到任何其他人有类似问题的实例——或者至少,他们公开整理过的任何实例。我缺少一些标志吗?是/usr/lib不是要看的地方?任何援助将不胜感激。

0 投票
0 回答
12 浏览

clang - 如何获取在 Clang 编译过程中使用的链接器脚本?

可以获取在 GCC(Binutils ld 链接器)编译过程中使用的链接器脚本:

但是,如果将 CLANG 与 LLD 一起使用,则没有这样的信息:

我只是好奇如何获取 CLANG/LLD 所需的信息。

0 投票
0 回答
14 浏览

cmake - 在 CMake 中使用非默认链接器(lld、mold、gold)

我必须向我的 CMake 命令添加哪些标志,才能使用非默认链接器可执行文件,如 lld、mold 或 gold?它应该独立于实际程序,纯 CMake。