编译低版本Gcc (

说在前面

这个问题发生在我使用Mac源码方式编译gcc3.4.1时发生的(Windows 上使用Cygwin安装也会有相同报错~),完整的报错为:

../../gcc/config/darwin-crt2.c: In function `__darwin_gcc3_preregister_frame_info':
../../gcc/config/darwin-crt2.c:156: error: unrecognizable insn:
(insn 11 9 12 0 (set (reg/f:SI 58)
        (plus:SI (reg:SI 3 bx)
            (const:SI (minus:SI (symbol_ref:SI ("&L___keymgr_global$non_lazy_ptr"))
                    (symbol_ref:SI ("")))))) -1 (nil)
    (nil))
../../gcc-3.4.1/gcc/config/darwin-crt2.c:151: internal compiler error: in extract_insn, at 
recog.c:2083
Please submit a full bug report,
with preprocessed source if appropriate.
See  for instructions.
make[2]: *** [crt2.o] Error 1
make[1]: *** [stage1_build] Error 2
make: *** [bootstrap] Error 2

出现这个的过程是我执行了

../configure --prefix=$PREFIX  --with-gmp=$(brew-path gmp) --with-mpfr=$(brew-path mpfr) --with-mpc=$(brew-path libmpc) --program-suffix=-$VERSION  --enable-languages=$LANGUAGES --with-system-zlib --enable-stage1-checking --enable-plugin --enable-lto  --disable-multilib
make bootstrap
make install

另:关于Mac如何使用源码方式编译Gcc 请参照Mac安装GCC (使用时 发现wget并不好用,所以直接下载了压缩包,本地解锁使用的。效用相同)

如需转载,请注明出自喵喵丸的Blog

解决方案

已经是10多年前的解决贴了(此处不禁在想我到底找了什么陈年的东西来编译),下面两个网址是gnu.org上面找到的解决方法,亲测可用。
问题的引入
问题的解决

这里我来做一个简单的流程引导。
① 请将 make 之前的行为都做完(即是 执行完 ./configure xxxxxxxx之后)
② 找到入下图所示的 i386.c文件
编译低版本Gcc (_第1张图片
③ 修改该文件内容
首先找到下面的代码段

      /* Offsets of TLS symbols are never valid.
     Discourage CSE from creating them.  */
      if (GET_CODE (inner) == PLUS
      && tls_symbolic_operand (XEXP (inner, 0), Pmode))
    return false;

在之后添加

    /* Allow {LABEL | SYMBOL}_REF - SYMBOL_REF-FOR-PICBASE for Mach-O.  */
 if (TARGET_MACHO && GET_CODE (inner) == MINUS)
   {
     if (GET_CODE (XEXP (inner, 0)) == LABEL_REF
   || GET_CODE (XEXP (inner, 0)) == SYMBOL_REF)
       if (GET_CODE (XEXP (inner, 1)) == SYMBOL_REF)
          {
             const char *sym_name = XSTR (XEXP (inner, 1), 0);
             if (! strcmp (sym_name, ""))
               return 1;
        }
   }

编译低版本Gcc (_第2张图片

④ 执行 make
⑤ 执行 make install

其他

感谢10年前 Andrew Pinski 帮我解决这么奇葩的问题 Q A Q

你可能感兴趣的:(Mac)