编译低版本Gcc (<gcc3.4.6),报错error: unrecognizable insn:
来源:互联网 发布:内涵段子引流脚本源码 编辑:程序博客网 时间:2024/06/06 08:47
说在前面
这个问题发生在我使用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 ("<pic base>")))))) -1 (nil) (nil))../../gcc-3.4.1/gcc/config/darwin-crt2.c:151: internal compiler error: in extract_insn, at recog.c:2083Please submit a full bug report,with preprocessed source if appropriate.See <URL:http://gcc.gnu.org/bugs.html> for instructions.make[2]: *** [crt2.o] Error 1make[1]: *** [stage1_build] Error 2make: *** [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-multilibmake bootstrapmake install
另:关于Mac如何使用源码方式编译Gcc 请参照Mac安装GCC (使用时 发现wget并不好用,所以直接下载了压缩包,本地解锁使用的。效用相同)
如需转载,请注明出自喵喵丸的Blog
解决方案
已经是10多年前的解决贴了(此处不禁在想我到底找了什么陈年的东西来编译),下面两个网址是gnu.org上面找到的解决方法,亲测可用。
问题的引入
问题的解决
这里我来做一个简单的流程引导。
① 请将 make 之前的行为都做完(即是 执行完 ./configure xxxxxxxx之后)
② 找到入下图所示的 i386.c文件
③ 修改该文件内容
首先找到下面的代码段
/* 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, "<pic base>")) return 1; } }
④ 执行 make
⑤ 执行 make install
其他
感谢10年前 Andrew Pinski 帮我解决这么奇葩的问题 Q A Q
0 0
- 编译低版本Gcc (<gcc3.4.6),报错error: unrecognizable insn:
- Ubuntu 16.04 LTS (64位)中 安装多版本GCC(GCC3.4.6)
- GCC编译报错
- gcc 编译报错
- 安装低版本gcc
- UBUNTU8.10下降低GCC版本来编译croostool
- mips cpu低版本gcc编译lua问题总结
- VS2008下编译MFC报平台版本低解决办法
- Ubuntu 安装低版本 GCC
- Ubuntu 安装低版本 GCC
- Ubuntu安装低版本gcc
- Ubuntu安装低版本gcc
- 安装低版本GCC方法
- ubuntu下降低gcc版本
- fedora 安装低版本gcc
- 如何安装低版本GCC
- MyEclipse工程高版本换低版本报错
- JDK从高版本换成低版本报错
- 获取android已安装的应用PackageInfo启动第三方APP应用
- Zipf's Law(map容器)
- 状态模式
- B\S备忘录21——使用反射将委托挂钩
- SSO 之CAS单点登录笔记
- 编译低版本Gcc (<gcc3.4.6),报错error: unrecognizable insn:
- 编程之路从大学毕业开启
- 简单搜索框的制作
- Python连接mysql数据库
- C++程序运行时间优化
- 深入Javascript函数与闭包(执行环境、变量对象与作用域链)使用详解
- android编译错误:No such file or directory
- 原子钟
- html移动端打电话,发短信笔记