如何为Cyrix Cx486DX交叉编译C代码?

时间:2014-04-16 16:58:14

标签: c cross-compiling

这个问题说明了一切。我需要交叉编译Cyrix CPU。编译器(不必是gcc)需要运行的系统是64位Kubuntu,带有i5处理器。我无法找到任何有用的谷歌搜索,除了一条信息说" Cx486DX与i486"软件兼容。所以我跑了

gcc -m32 -march=i486 helloworld.c -o helloworld486.bin

但在Cyrix机器上执行helloworld486.bin会给我一个浮点异常。我对CPU的了解相当有限,而且我现在没有想法,任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:3)

不幸的是,您需要的不仅仅是为486生成指令的编译器。编译器库以及静态链接的任何库也应该是合适的。大多数当前Linux发行版中包含的GCC版本能够生成仅486个目标文件(我认为),但其库和存根对象(例如crtbegin.o)已经预生成686个CPU。

这里有两个主要的选择:

  • 使用为自身编译的Linux构建系统,无论是在VM中还是在chroot jail中。不幸的是,获得486的现代Linux发行版是一个问题 - 每个主要的发行版都在继续发展。也许(很多)较旧的Linux发行版会有所帮助吗?

  • 为486创建一个完整的cross-compiler工具链。然后,您可以交叉编译所有需要的库的单独版本,并让您的构建脚本使用它们。老实说,确保(通常基于686的)构建主机没有任何内容滑入构建结果并不容易。它很容易从头开始交叉编译整个Linux系统,ala CLFS

    自动交叉编译工具链构建脚本(例如crosstool-ng)可能会有所帮助。

您能否添加有关目标系统的更多详细信息?它是嵌入式系统还是旧PC?它使用什么操作系统?是否可以在具有目标操作系统版本的VM中运行编译?