问题标签 [gold-linker]

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 回答
364 浏览

linker - 为 httpd 生成 LLVM IR

我正在尝试用 LLVM 编译 apache2,以在 LLVM IR 中生成最终的二进制文件。

我在编译和链接时使用了 flto 选项,并通过 clang 将“also-emit-llvm”传递给链接器。它似乎适用于大多数步骤,但是我有两个担忧

1)之前我用的是LLVM 3.6,它的gold插件不接受also-emit-llvm,但只有emit-llvm,基本上它只会发出elf或llvm。Autotools 构建系统不喜欢哪个。configure 和 make 脚本需要二进制文件,而我需要 llvm。有什么解决办法吗?

2)所以我转移到 LLVM 3.5.2,构建过程顺利,我可以生成 httpd.bc 和 httpd elf 二进制文件,但链接器不想链接模块(它能够链接二进制文件) ,我得到这个错误

`

`

我可以看到 mod_authn_file.o 是一个有效的 LLVM IR 文件,我可以使用 llvm-dis 进行反汇编。此外,就在这一步之前,链接器能够链接 httpd 和 httpd.bc

关于错误是什么的任何帮助?

0 投票
1 回答
3406 浏览

android-ndk - 如何启用黄金链接器?

我记得当 Gold 链接器被引入 NDK 时,有一个关于如何切换到它的说明。但现在我在文档中的任何地方都找不到该信息。Application.mk那么,为了使用gold链接器,我应该放什么?

我试过这个标志: APP_LDFLAGS += -fuse-ld=gold --threads

它抛出这个错误:

arm-linux-androideabi-g++:错误:无法识别的命令行选项--threads'

所以我怀疑这不是gold我要联系的。

0 投票
2 回答
2085 浏览

clang - 在 Freebsd 上启用黄金链接器

我一直在尝试启用 FreeBSD 上的黄金链接器以使用链接时间优化。我从 /usr/ports 下的 binutils 中获得了金子。在使用 make -k install clean 构建 binutils 后,我在 /usr/bin 下得到了 ld,在目录 /usr/local/bin 中得到了 ld、ld.gold 和 ld.bfd。

现在,在尝试对此处的简单示例程序使用链接时间优化http://llvm.org/docs/GoldPlugin.html(标题为“链接时间优化示例”下的 ac 和 bc)时,我输入了如下四个命令:

我收到以下错误:

链接器是否存在未调用 ld.gold 的问题。我应该用 ld.gold 替换 ld 吗?链接器是否在正确的目录中查找 .so 插件?

LLVMgold.so 和 libLTO.so 共享对象位于目录 /usr/local/llvm-devel/lib/ 中。我找不到安装 clang 的目录。我不确定在哪里创建 bfd-plugins 目录并将符号链接添加到 LLVMgold.so 和 libLTO.so。

我正在使用 freebsd 10.1 版本。如何启用黄金链接器以进行链接时间优化?还有我怎样才能使它成为默认链接器?

0 投票
1 回答
2390 浏览

gcc - 配置 gcc 时 --enable-gold 的用途

从源代码构建 gcc 5.1 时,配置脚本列出以下选项:

这是什么意思?如果盒子上安装了黄金,它是否告诉 gcc 使用黄金作为链接器?如果是这样,它是否期望黄金成为默认链接器,或者我应该通过

选项?

我在在线 gcc 配置文档中找不到对 --enable-gold 的引用。

谢谢!

0 投票
1 回答
20766 浏览

gcc - 使用 flto 的要求

如果我想编译我的项目,-flto构建 gcc 是否足够,--enable-gold或者我还需要构建 gold 并用它替换 ld?我还需要其他标志吗?即我正在这样做

0 投票
1 回答
438 浏览

c++ - Cygwin 是否支持 Gold 链接器?

我正在执行发布测试周期。GNU Linux 的一项测试是与Gold 链接器的集成:

makefile 具有以下逻辑来识别 Gold 链接器:

然后是利用它的配方:

但是,在针对 Cygwin 运行时:

我检查了Cygwin FAQ,但它没有提到 Gold。但是,它确实调用了 Gold 所属的 Binutils。并且端口不拒绝-fuse-ld=gold

Cygwin 是否支持 Gold 链接器?如果是这样,我该怎么办?


(Cygwin 似乎可以从 Gold 中受益,因为链接需要很长时间。在这个测试系统上,链接大约需要 15 到 20 秒cryptest.exe。所以这也是个人目标)。

0 投票
1 回答
923 浏览

makefile - 将 Autotooled 项目编译为 LLVM 位码时出现链接器错误

我按照http://gbalats.github.io/2015/12/10/compiling-autotooled-projects-to-LLVM-bitcode.html#compiling-llvm-from-source-with-gold-plugin上的说明进行尝试将包括 coreutils 在内的各种项目编译到 LLVM IR。

我尝试使用 Clang 3.4 和一个简单的测试文件在 Ubuntu 14.04 上测试我的安装

如前所述,但失败了

但是,添加参数后,-B/usr/lib/gold-ld我可以编译测试文件。

尽管如此,编译 coreutils 仍然失败并出现以下错误:

最后执行的命令是:

在 libver.a 和 libcoreutils.a 上手动执行 llvm-ranlib 不会改变结果。执行llvm-nm -s src/libver.a打印以下内容:

但是,通过正常构建,输出如下:

llvm-ranlib 有问题吗?您对如何修复链接器错误有任何建议吗?

0 投票
1 回答
1026 浏览

c++ - 链接器错误中的“来自插件的符号”

所以,我做了一些愚蠢的事情,给自己一个链接器错误:

我很好奇“插件的符号”部分是什么意思?在我遇到链接器错误的各种冒险中,我从未见过这种情况。在这种情况下,什么是“插件”?

0 投票
1 回答
2639 浏览

c++ - -fsanitize 在 GCC-6.1 中不使用黄金链接器

更新(2016 年 9 月 30 日)

gcc-6.2 ((Ubuntu 6.2.0-3ubuntu11~16.04) 6.2.0 20160901) 的 Ubuntu 版本不再有这个问题。


我正在使用 gcc-6.1[1] ((Ubuntu 6.1.1-3ubuntu11~14.04.1) 6.1.1 20160511)、GNU binutils 2.24 和支持 GLIBCXX_3.4.22 的 libstdc++ 的 Ubuntu 版本。即使在一个简单的“hello world”程序中,指定消毒剂也不会强制使用黄金链接器。

主文件

编译和链接

给出错误

这表明该-fsanitize选项未选择黄金链接器。当然,简单的修复方法是-fuse-ld=gold在链接期间使用,但以前的 gcc 版本在使用 sanitizers 时不需要这个。例如,这段代码在 gcc-5.3 和 4.9(都是 Ubuntu 版本)下运行良好。其他人对 gcc-6.1 的非 Ubuntu 版本有这个问题吗?Ubuntu构建是否损坏?


[1] 使用以下标志构建(gcc-5.3 和 gcc-4.9 构建时只有名称和后缀不同)

0 投票
1 回答
1192 浏览

c - 黄金链接器问题

我正在检查黄金链接器,看看它是否加快了链接过程。ld我将in的软链接更改/etc/alternative/ld为指向/usr/bin/gold.ld,我看到它确实如此。

结果是链接时间变得更慢了,最糟糕的是链接由于我不明白的原因而失败。

有没有人有过渡到黄金链接器的经验?如何在其中使用并行链接?(通过使用顶级命令,我只看到了 1 个ld进程)。

谢谢