似乎无法获得gcc或binutils来构建新的链接器或汇编器

时间:2012-03-05 21:09:32

标签: macos gcc compilation ld binutils

我正在尝试建立一个完全近期且最新的gcc环境......基本上是gcc 4.6.3和binutils 2.22。不是Xcode 4.2.1附带的相当老的gcc 4.2.1(llvm)。我的问题不在于编译(至少目前为止)。我可以完美地同时编译binutils,gcc和两者。但是每次我尝试编译时,我都会在configure的输出

的末尾看到这样的内容
  

检查在哪里找到目标ar ...刚刚编译完   检查在哪里找到目标...主机工具
  检查在哪里找到目标cc ...刚编译了   检查在哪里找到目标c ++ ...刚刚编译了   检查在哪里找到libstdc ++的目标c ++ ...刚编译了   检查在哪里找到目标dlltool ...刚刚编译了   检查在哪里找到目标gcc ...刚刚编译了   检查在哪里找到目标gcj ...刚刚编译了   检查在哪里找到目标gfortran ...刚编译了   检查在哪里找到目标gccgo ...主机工具
  检查在哪里找到目标ld ...主机工具
  检查在哪里找到目标脂肪...主机工具
  检查在哪里找到目标nm ...刚刚编译完   检查在哪里找到目标objdump ...刚刚编译了   检查在哪里找到目标ranlib ...刚刚编译完   检查在哪里找到目标条...刚刚编译完   检查目标风向的位置...刚刚编译完   检查在哪里找到目标windmc ...刚刚编译了

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

正如你所看到的,我可以得到一个"刚刚编译好的#34;大多数软件的版本,我只是无法弄清楚如何编译和ld。我已经阅读了ld文件夹中的README文件(在binutils包中)并且它说要执行:

  

make all-ld

我这样做,因为我已经"制造"来源,它告诉我没有什么可做的......

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

又是

的快速检查
  

whereis ld

无论如何,在考虑到这一点之后立即重新认识它将是愚蠢的现在我没有任何东西可以链接gcc(甚至是新版本的ld(如果我完全可以工作))

所以,总之,我正在尝试编译ld的新副本并作为......

事实:

  • 我正在运行Mac OS X Lion。
  • 我正在尝试使用Mac OS X Lion附带的默认gcc(gcc 4.2.1)编译gcc 4.6.3。
  • 配置脚本似乎认为我不想编译新的链接器和汇编程序。
  • 我已成功构建了一个有效的gcc和binutils但没有新的链接器和汇编器。
  • 我尝试使用--with-ld = yes和--with-gold = no选项编译binutils gcc,他们似乎没有做任何事情。
  • 我使用gcc v4.2.1构建了gmp v5.0.4,mpfr v3.1.0和mpc v0.9,将它们安装在与gcc和binutils configure中使用的相同的前缀中。
  • 对于每个配置,我明确说明了gmp,mpfr和mpc的位置。
  • 我将gmp,mpfr和mpc与gcc分开构建(这样做会导致一些构建错误)。
  • 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
  • 我主要关注this tutorial
  • 因为我的计算机上没有其他编译器,所以我被迫使用mac os x default llvm编译器(我之前描述为gcc 4.2.1),我读here并不起作用,但是我的电脑上没有gcc-4.2。
  • 使用我刚刚编译的新版gcc(gcc-4.6.3)编译gcc-4.7.0(最近的快照)会导致编译错误(我设置环境变量CC和CXX)。
  • 我已经尝试过首先编译gcc,而不是binutils,反过来,最终我决定使用binutils构建gcc是要走的路。你上面的输出是同时编译的
  • 我阅读了this关于黄金的小帖子,并尝试添加--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. 继续Stack Overflow。

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

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

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

但我仍然没有得到任何气体。

非常感谢任何帮助! (如果你想要一些我没有提供的信息,请问)

谢谢...... :)

3 个答案:

答案 0 :(得分:3)

Afaik使用标准版本(configure; make),结果的命名方式不同。 gas-new和gld-new左右。

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

答案 1 :(得分:1)

我意识到,这基本上是一个mac问题。在安装并获得Ubuntu后,它构建了链接器和汇编器就好......编译gcc仍然有点麻烦,但这是因为Debian的新多架构支持...但这是另一个问题...感谢您的帮助Marco van de Voort

答案 2 :(得分:1)

Binutils在OS X上不支持汇编器或链接器,请参见binutils configure脚本:

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)目标,这会将ldgas添加到noconfigdirs列表中。这意味着在构建过程中将跳过这些目录。

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