【发布时间】:2013-11-28 18:12:33
【问题描述】:
为了编译一个旧的编译器,我使用了安装在我机器上的 gcc(gcc 版本 4.4.6)。
gcc v 4.4.6 编译器不支持旧编译器文件中的某些语法,并发出错误,例如:需要左值作为左操作数,错误:尝试使用中毒...等等。
上次有人编译他们使用 gcc 2.96 版的旧编译器时。 所以我下载了一些旧版本的 gcc(3.0 - 没有找到 2.96)并尝试从中构建二进制文件。
但是 - 我的机器是 x86_64 并且 3.0 编译器发出错误:
不支持配置 x86_64-redhat-linux-gnu
很自然 - 那时候还没有 x86_64。 欢迎任何建议。
更新: 我在 vertualBox 上安装了一个旧的 redhat 版本(5.7),它带有一个旧的 gcc 编译器(3.4.6)并试图编译交叉编译器。我的主机是 - i386-redhat-linux。现在,我没有收到此消息,并且开始编译交叉编译器,但是,当编译 unwind-dw2.c 文件时,我得到了下一个汇编程序错误:
/tmp/ccAk3sX0.s: Assembler messages:
/tmp/ccAk3sX0.s:259: Error: unrecognized instruction `addi r11,low(r0,.L47),r11'
/tmp/ccAk3sX0.s:736: Error: unrecognized instruction `addi r3,low(r0,.L327),r3'
/tmp/ccAk3sX0.s:1226: Error: unrecognized instruction `addi r3,low(r0,.L317),r3'
/tmp/ccAk3sX0.s:1739: Error: unrecognized instruction `addi r3,low(r0,.L412),r3'
所以我又卡住了……
【问题讨论】:
-
避免这样做。或者在
chroot-ed 环境中运行旧的 32 位 Linux 发行版。顺便说一句,您正在编译的“旧编译器”到底是什么??? -
试图构建一个交叉编译器。编译器基于旧版本的 gcc (3.0)。我认为我需要安装某种库......我认为这些机器支持 32 位 - 但我不确定。会检查这个,但我认为不需要在 linux 上安装旧版本...
-
有什么理由不使用最新的 GCC(例如 4.8 版)交叉编译器???
-
原因是我有旧的交叉编译器源代码,我需要编译这些源代码才能使用交叉编译器箱。稍后我会将这些来源更新为最新的...
-
不,编译最近的交叉编译器...(例如,从源代码编译 GCC 4.8,作为交叉编译器)