问题标签 [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.
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
关于错误是什么的任何帮助?
android-ndk - 如何启用黄金链接器?
我记得当 Gold 链接器被引入 NDK 时,有一个关于如何切换到它的说明。但现在我在文档中的任何地方都找不到该信息。Application.mk
那么,为了使用gold
链接器,我应该放什么?
我试过这个标志:
APP_LDFLAGS += -fuse-ld=gold --threads
它抛出这个错误:
arm-linux-androideabi-g++:错误:无法识别的命令行选项--threads'
所以我怀疑这不是gold
我要联系的。
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 版本。如何启用黄金链接器以进行链接时间优化?还有我怎样才能使它成为默认链接器?
gcc - 配置 gcc 时 --enable-gold 的用途
从源代码构建 gcc 5.1 时,配置脚本列出以下选项:
这是什么意思?如果盒子上安装了黄金,它是否告诉 gcc 使用黄金作为链接器?如果是这样,它是否期望黄金成为默认链接器,或者我应该通过
选项?
我在在线 gcc 配置文档中找不到对 --enable-gold 的引用。
谢谢!
gcc - 使用 flto 的要求
如果我想编译我的项目,-flto
构建 gcc 是否足够,--enable-gold
或者我还需要构建 gold 并用它替换 ld?我还需要其他标志吗?即我正在这样做
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
。所以这也是个人目标)。
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 有问题吗?您对如何修复链接器错误有任何建议吗?
c++ - 链接器错误中的“来自插件的符号”
所以,我做了一些愚蠢的事情,给自己一个链接器错误:
我很好奇“插件的符号”部分是什么意思?在我遇到链接器错误的各种冒险中,我从未见过这种情况。在这种情况下,什么是“插件”?
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 构建时只有名称和后缀不同)
c - 黄金链接器问题
我正在检查黄金链接器,看看它是否加快了链接过程。ld
我将in的软链接更改/etc/alternative/ld
为指向/usr/bin/gold.ld
,我看到它确实如此。
结果是链接时间变得更慢了,最糟糕的是链接由于我不明白的原因而失败。
有没有人有过渡到黄金链接器的经验?如何在其中使用并行链接?(通过使用顶级命令,我只看到了 1 个ld
进程)。
谢谢