- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据gcc build instructions您可以在构建 gcc(以及 gmp、mpc 等)的同时构建 binutils。
该页面内容如下:
If you also intend to build binutils (either to upgrade an existing installation or for use in place of the corresponding tools of your OS), unpack the binutils distribution either in the same directory or a separate one. In the latter case, add symbolic links to any components of the binutils you intend to build alongside the compiler (bfd, binutils, gas, gprof, ld, opcodes, ...) to the directory containing the GCC sources.
Likewise the GMP, MPFR and MPC libraries can be automatically built together with GCC. Unpack the GMP, MPFR and/or MPC source distributions in the directory containing the GCC sources and rename their directories to gmp, mpfr and mpc, respectively (or use symbolic links with the same name).
这对于 gmp、mpc、mpfr 工作得很好,但我似乎无法让它构建所有 binutils。我也无法弄清楚如何让它从 binutils 构建新的黄金链接器。有问题的版本是 gcc-4.4.2 和 binutils-2.20。
分步说明会很棒(对于我以及其他遇到此问题的人来说)。
最佳答案
这应该仍然受到支持,因为它通常用于构建交叉编译器。
事实上,我刚刚使用 gcc 4.6.0 和 binutils 2.21(使用适当版本的 gmp、mpc 和 mpfr)完成了此操作,并且以下内容似乎工作正常:
将要构建的内容的所有文件(gcc-4.6.0.tar.bz2、binutils-2.21.tar.bz2 等)放入新目录中,例如src
将它们全部解压缩到此目录中,因此您最终会得到 gcc-4.6.0/
binutils-2.21/
gmp-5.0 .2/
以及更多人并排坐着
tar jxvf gcc-4.6.0.tar.bz2...(在此处解压其他文件,观察文件列表滚动过去)
cd gcc-4.6.0
并符号链接(symbolic link) gmp、mpc 和 mpfr 目录,链接中不包含版本号,例如:
ln -s ../gmp-5.0.2 gmp
现在对 gcc 目录中不存在的 binutils 目录中的所有内容进行符号链接(symbolic link),因此已存在的任何内容都将优先,但 binutils 工具对于构建来说将是可见的:
对于 ../binutils-2.21/* 中的文件;执行 ln -s "${file}";完成
更改目录并创建一个构建目录,以将所有这些内容单独构建到源中(这始终是推荐的方法,并且它往往仍然比在源目录中构建更可靠):
cd ..; mkdir 构建
此时您应该拥有一组目录和链接,如下所示:
binutils-2.21/ build /gcc-4.6.0/gmp -> ../gmp-5.0.2mpc -> ../mpc-0.9mpfr -> ../mpfr-3.0.1bfd -> ../binutils-2.21/bfdbinutils -> ../binutils-2.21/binutils气体 -> ../binutils-2.21/gas...(这里有更多 binutils 的符号链接(symbolic link),加上现有的 gcc 东西)GMP-5.0.2/mpc-0.9/mpfr-3.0.1/
从该目录配置全部内容,使用您需要传递给配置的任何选项:
../gcc-4.6.0/configure --prefix=/foo/bar --enable-languages=c,c++,ada
构建、等待、安装(您可能需要使用 make -j4
左右来并行进行一些构建,因为这需要一段时间):
制作-j4;进行安装
如果尚未将目标添加到您的路径中(如果该目标不在 /etc/ld.so.conf
中指定的范围内,则可能将 lib 目录添加到 LD_LIBRARY_PATH,如消息中所述)关于在 make install
步骤中安装库的信息),并且一切都应该在这个新版本中启动并运行。
打开新 shell 后,可能值得检查一下您是否正在使用此已安装的版本:
`which gcc`
和
`which as`
..以及版本符合您的预期:
`gcc --version`
和
`as --version`
..以及(当然)在您将其释放到代码库之前,通过一些简单的示例测试已安装的版本是否可以正常构建可执行文件:)
编辑:下面的评论包含一些已知可以协同工作的版本集。并非所有组合都有效,因此您可能需要对提到的不同组合进行一些尝试和错误!
稍后编辑:gdb 也可以包含在此版本中(再次需要兼容的组件版本 - 请参阅评论)。以类似的方式将其添加为 binutils 之后的最后一件事,使用 for f in ../gdb-8.1.1/* ;执行 ln -s "${f}";完成
,构建将自动拾取它。
截至 2023 年 5 月 3 日编辑:最新发布版本 gcc 13.1.0、binutils 2.40、gdb 13.1、cloog 0.18.1、isl 0.24、gmp 6.1.0、mpc 1.2.1、mpfr 4.1.0 全部构建在一起很好,至少对于 c、c++、fortran 作为语言集来说是这样。
关于gcc - 一起编译 binutils 和 gcc 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1726042/
我正在关注一个网站 ( http://wiki.osdev.org/GCC_Cross-Compiler ) 来学习如何为不同的架构交叉编译一些代码。因此,第一步是为特定目标下载和编译 Binutil
按照本网站的说明进行操作:http://llvm.org/docs/GoldPlugin.html 从命令: ../binutils/configure --enable-gold --enable-
当我命令“make”时,我收到如下错误: /usr/bin/ld: ../../../lib//liblmi.a(LMInterface.o): unrecognized relocation (0x
我正在尝试按照发现here的说明安装交叉编译器。我正在使用64位版本的Ubuntu 13.10。输入命令配置binutils后,我将得到: Configuring for a x86_64-unkno
我正在尝试从头开始构建 Linux,现在我在 chapter 5.4 ,它告诉我如何构建 Binutils。我有 binutils 2.20 的源代码,但是当我尝试构建它时: time { ./bin
我正在尝试创建尽可能小的 ELF。我创建了一个这样的测试文件(NASM 语法): SECTION .text dd 0xdeadbeef 使用此链接描述文件: SECTIONS { .text
我正在将现有系统从 Windows 移植到 Linux。构建由多个静态库构成。我遇到了链接错误,在 libB 的对象中找不到符号(在 libA 中定义)。链接器行看起来像 g++ test_obj.o
我需要在我的项目中包含一个二进制程序。我使用 objcopy 从二进制文件创建对象文件。目标文件可以在我的程序中链接。 objcopy 创建适当的符号来访问二进制数据。 例子 objcopy -I b
我正在尝试构建 binutils 2.21 源代码并启用调试。我的主要目标是实际调试 objdump。但为了构建它,我想我必须构建整个包。 不幸的是,配置文件上没有调试选项。在配置 CFLAGS 之前
我正在尝试在 Cygwin 环境中安装 binutils。 我的路径一团糟(例如,一行配置的输出是: "checking for ld... (cached) c:/dev/perl/c/bin/..
我有一个由某人编译的 binutils 版本。我需要使用相同的选项重新编译一个新的 binutils。 我知道 gcc -v 打印出配置选项。那么也许有什么方法可以读取 binutils 的构建选项?
看说明书,objdump和 nm具有重叠特征。 你什么时候使用每一个?每个命令的最初目的是什么? 最佳答案 它们没有类似的参数。nm列出文件符号,而 objdump可以显示很多关于文件的不同信息。 o
LLVM 编译器工具链有一个与普通 gcc 兼容的 gcc。使用 llvm-gcc 的优点是可以访问任意目标,这意味着当您尝试编译为随机架构时,正常的 gcc 会说没有这样的目标,比如 mips-ap
我正在开发一个项目,我们的验证测试脚本需要在正在测试的软件版本中定位符号地址。这可用于设置断点或从内存中读取静态数据。我想要创建一个包含符号名称、内存中基地址和大小的映射文件。我们的构建输出一个 EL
我正在尝试通过 macports 在 Lion 上安装 gnu ld。我已经从 macports 安装了 gcc 4.6。但是我需要创建 elf 二进制形式的二进制文件,我将其作为单独的问题发布 he
我在脚本中使用 stat 两次,一次是为了查找文件权限,一次是为了查找文件的大小。 `stat -c %A "$directory/$file"` `stat -c %s "$directory/
TLDR:在 gcc 的跨 native 构建中出现 fatal error “无法获得处理时间”。我可以从 gcc.c 中删除 report_times 代码还是使用 gcc 命令行选项禁用 rep
我正在致力于优化单个 C 目标文件的占用空间。我使用编译器 arm-elf-gcc,因为目标平台适用于 ARM-926EJ 处理器。 我想记录当前大小,然后在优化后进行比较,我想知道为什么arm-el
当我运行 make binutils/readelf 时,出现以下错误: In file included from readelf.c:43:0: sysdep.h:23:25: fatal err
我正在编写一个脚本,使 uClibc 可用于现有的以 glibc 为目标的 gcc/binutils 工具链,而我留下的一个问题是 pthread_cancel 需要 dlopen libgcc_s.
我是一名优秀的程序员,十分优秀!