4

我正在尝试建立一个完全最新的 gcc 环境......基本上是 gcc 4.6.3 和 binutils 2.22。不是 Xcode 4.2.1 附带的相当老的 gcc 4.2.1 (llvm)。我的问题不在于编译(至少现在)。我可以完美地同时编译 binutils、gcc 和两者。但是,每次我尝试编译时,我都会发现类似这样的内容出现在配置输出的末尾

检查在哪里找到目标 ar...刚刚编译
检查在哪里找到目标 as...主机工具
检查在哪里找到目标 cc...刚刚编译
检查在哪里找到目标 c++...刚刚编译
检查在哪里为 libstdc++ 找到目标 c++...刚刚编译
检查在哪里找到目标 dlltool...刚刚编译
检查在哪里找到目标 gcc...刚刚编译
检查在哪里找到目标 gcj...刚刚编译
检查在哪里找到目标gfortran...刚刚编译
检查在哪里找到目标gccgo...主机工具
检查在哪里找到目标ld...主机工具
检查在哪里找到目标lipo...主机工具
检查在哪里找到目标 nm...刚刚编译
检查在哪里找到目标 objdump...刚刚编译
检查在哪里找到目标 ranlib...刚刚编译
检查在哪里找到目标条...刚刚编译
检查在哪里找到目标windres...刚刚编译
检查在哪里可以找到目标windmc...刚刚编译

我在 gcc 源文件夹中为 ld、opcodes、bfd、gas、gprof 和 binutils 创建了符号链接,以获取此输出...(如果有帮助)

正如你所看到的,我可以得到大多数软件的“刚刚编译”的版本,只是我不知道如何编译 as 和 ld。我已经阅读了 ld 文件夹(在 binutils 包中)中的 README 文件,它说要执行:

做所有的ld

我做了并且我已经“制作”了源代码,它告诉我没有什么可做的......

我现在唯一能想到的就是暂时修改我的路径以不包含 ld。这会很容易...

又名快速检查

在哪里

无论如何,在想到这一点后,我立即意识到这将是愚蠢的,因为现在我没有任何东西可以链接 gcc(甚至是新版本的 ld(如果我要工作的话))

因此,总而言之,我正在尝试编译 ld 的新副本并作为... 事实:

  • 我正在运行 Mac OS X Lion。
  • 我正在尝试使用 Mac OS X Lion (gcc 4.2.1) 附带的默认 gcc 编译 gcc 4.6.3。
  • 配置脚本似乎认为我不想编译新的链接器和汇编器。
  • 我已经成功构建了一个可以工作的 gcc 和 binutils,但没有新的链接器和汇编器。
  • 我尝试使用 --with-ld=yes 和 --with-gold=no 选项编译 binutilsgcc,它们似乎没有做任何事情。
  • 我使用 gcc v4.2.1 构建了 gmp v5.0.4、mpfr v3.1.0 和 mpc v0.9,并将它们安装在与 gcc 和 binutils 配置中使用的相同前缀中。
  • 对于每个配置,我都明确说明了 gmp、mpfr 和 mpc 的位置。
  • 我与 gcc 分开构建了 gmp、mpfr 和 mpc(这样做会导致一些构建错误)。
  • gcc、binutils、gmp、mpfr 和 mpc 都构建在一个单独的目录中,该目录不是源目录的子目录(按照 gcc 安装说明的建议)。
  • 我正在使用以下选项编译 gcc:
    ../gcc-4.6.3/configure --prefix=$PREFIX --with-gmp=$PREFIX --with-mpfr=$PREFIX --with-mpc=$PREFIX - -enable-checking=release --program-suffix=-4.6.3 --enable-ld=yes --enable-gold=no
  • 我主要遵循本教程
  • 因为我的计算机上没有其他编译器,所以我被迫使用我在这里读到的 mac os x 默认 llvm 编译器(我之前描述为 gcc 4.2.1)不起作用,但是我没有 gcc-4.2在我的电脑上。
  • 使用我刚刚编译的新版本 gcc (gcc-4.6.3) 编译 gcc-4.7.0(最近的快照)会导致编译器错误(我设置了环境变量 CC 和 CXX)。
  • 我尝试先编译 gcc,而不是 binutils,反之,最终我决定用 binutils 构建 gcc 是可行的方法。您上面的输出是同时编译的
  • 我阅读了关于黄金的这篇小文章,并尝试添加--enable-gold--enable-ld。他们什么都没改变
  • 我做事的顺序:
    1. 编译 gmp。
    2. 安装它。
    3. 编译mpfr。
    4. 安装它。
    5. 编译mpc。
    6. 安装它。
    7. 为 ld、gas、binutils、opcodes、gprof、bfd 建立到 gcc src 主目录的符号链接。
    8. 配置 gcc。
    9. 找到那个“状态报告”。
    10. 考虑另一种可能构建 ld 和 as 的方法。
    11. 失败了。
    12. 继续堆栈溢出。

正如“fazo”所说,我并没有真正告诉任何人我是如何编译 binutils 的......所以在这里......

我尝试首先编译 gcc,而不是使用 gcc 构建 binutils,编译得很好,但没有 ld、as 甚至是 gold。然后我尝试使用 llvm 编译器构建 binutils 然后 gcc。它也工作得很好,但仍然没有 ld、as 或 gold。最后,我在这里读到我可以对 binutils 中的某些项目进行符号链接,而 gcc 会检测并构建它们……我做到了。并且 gcc 找到了其中的大部分(如前所述,我将符号链接放在 gcc 目录中的 ld、操作码、bfd、gas、gprof 和 binutils)我这里的实际问题是告诉配置脚本编译一个新的汇编器和链接器。此外,让我感到困惑的是,在 binutils README 文件夹中,它说仅 ./configure make make install 将构建和安装所有工具,我试图弄清楚为什么不是这种情况。

最后的命令是:../binutils-2.22/configure --prefix=$PREFIX --with-gmp=$PREFIX --with-mpfr=$PREFIX --with-mpc=$PREFIX --program-后缀=-4.6.3 --enable-ld --with-gnu-as --with-gnu-ld

但我仍然没有 ld 也没有汽油。

任何帮助是极大的赞赏!(如果你想要一些我没有提供的信息,请问)

谢谢... :)

4

3 回答 3

3

具有标准构建(配置;制作)的 Afaik,结果名称不同。gas-new 和 gld-new 左右。

请注意,OS X 通常不使用 binutils,而是使用 Apple 自己的 Mach-O 链接器 (cctools)。即使你成功了,它也可能不会导致一个可行的解决方案

于 2012-03-06T12:27:09.567 回答
1

我意识到,这基本上是一个mac问题。在安装并获得 Ubuntu 之后,它构建了链接器和汇编器就好了......编译 gcc 仍然有点麻烦,但那是因为 Debian 的新的多架构支持......但这是另一个问题......谢谢你的帮助马尔科·范德沃尔特

于 2012-03-19T21:50:11.687 回答
0

Binutils 不支持 OS X 上的汇编器或链接器,请参阅 binutilsconfigure脚本:

case "${target}" in
  *-*-chorusos)
    ;;
  aarch64-*-darwin*)
    noconfigdirs="$noconfigdirs ld gas gdb gprof"
    noconfigdirs="$noconfigdirs sim target-rda"
    ;;
  arm-*-darwin*)
    noconfigdirs="$noconfigdirs ld gas gdb gprof"
    noconfigdirs="$noconfigdirs sim target-rda"
    ;;
  powerpc-*-darwin*)
    noconfigdirs="$noconfigdirs ld gas gdb gprof"
    noconfigdirs="$noconfigdirs sim target-rda"
    ;;
  i[3456789]86-*-darwin*)
    noconfigdirs="$noconfigdirs ld gprof"
    noconfigdirs="$noconfigdirs sim target-rda"
    ;;
  x86_64-*-darwin[912]*)
    noconfigdirs="$noconfigdirs ld gas gprof"
    noconfigdirs="$noconfigdirs sim target-rda"
    ;;
  *-*-darwin*)
    noconfigdirs="$noconfigdirs ld gas gdb gprof"
    noconfigdirs="$noconfigdirs sim target-rda"
    ;;

对于任何darwin(即 OS X)目标,这会将ld和添加gasnoconfigdirs列表中。这意味着在构建期间将跳过这些目录。

要在 OS X 上构建 GCC,您需要使用本机 OS X 汇编器和链接器(它们是“Xcode 命令行工具”包的一部分,来自 App Store)。

于 2018-08-29T14:35:15.160 回答