GCC作为m68k交叉编译器

时间:2017-05-11 00:17:52

标签: c gcc cross-compiling 68000

我正在尝试重新编译binutils和GCC作为m68k架构的交叉编译器。我遵循这些指示:

http://darkdust.net/writings/megadrive/crosscompiler

然而,这个过程一直在失败。我尝试过binutils 2.16.1和gcc 3.4.6,binutils 2.15和gcc 3.4.2以及binutils 2.15和gcc 3.4.6。

在制作和安装binutils之后,在gcc上运行“make”时,最后一次尝试失败。它给出了以下错误:

gcc   -g -O2 -DIN_GCC -DCROSS_COMPILE  -W -Wall -Wwrite-strings -Wstrict-
prototypes -Wmissing-prototypes -pedantic -Wno-long-long    -DHAVE_CONFIG_H    
-I. -I. -I../../gcc-3.4.2/gcc -I../../gcc-3.4.2/gcc/. -I../../gcc-
3.4.2/gcc/../include   \
-DTARGET_MACHINE=\"m68k-coff\" \
-c ../../gcc-3.4.2/gcc/collect2.c -o collect2.o

In file included from /usr/include/fcntl.h:289:0,
             from ../../gcc-3.4.2/gcc/system.h:214,
             from ../../gcc-3.4.2/gcc/collect2.c:30:

In function ‘open’,
inlined from ‘collect_execute’ at ../../gcc-3.4.2/gcc/collect2.c:1535:20:
/usr/include/x86_64-linux-gnu/bits/fcntl2.h:50:4: error: call to 
‘__open_missing_mode’ declared with attribute error: open with O_CREAT or 
O_TMPFILE in second argument needs 3 arguments
__open_missing_mode ();
^
Makefile:1364: recipe for target 'collect2.o' failed
make[1]: *** [collect2.o] Error 1
make[1]: Leaving directory '/home/gabriel/src/gcc-build/gcc'
Makefile:23339: recipe for target 'all-gcc' failed
make: *** [all-gcc] Error 2

我不希望修复此错误,但有没有人知道binutils和gcc发布的组合有效吗?我应该使用某个版本的gcc来重新编译gcc吗?

感谢您对此有任何见解!

编辑:

我的linux有GCC 5.4.0所以我刚刚下载了5.4.0源代码,尝试重建m68k交叉编译。我现在在gcc源代码上运行“make”时出现以下错误:

*** Configuration m68k-unkown-coff not supported

这可能是什么原因?是因为我需要旧版本的GCC吗? (我正在使用的binutils版本肯定支持m68k目标)。我正在使用的教程总是定义“--target = m68k-coff”,应该是“--target = m68k-unkown-coff”吗?

编辑2:

所以我尝试编译m68k-elf,但现在我收到了这个错误:

checking for m68k-elf-gcc... /home/gabriel/src/gcc-build/./gcc/xgcc -B/home/gabriel/src/gcc-build/./gcc/ -B/opt/m68k/m68k-elf/bin/ -B/opt/m68k/m68k-elf/lib/ -isystem /opt/m68k/m68k-elf/include -isystem /opt/m68k/m68k-elf/sys-include
checking for suffix of object files... configure: error: in `/home/gabriel/src/gcc-build/m68k-elf/libgcc':
configure: error: cannot compute suffix of object files: cannot compile

我在构建之前运行了download_prerequisites,所以它不应该是MPC库的问题。知道如何继续前进吗?我只需要汇编程序,所以我不介意目标文件的格式是什么。谢谢!

2 个答案:

答案 0 :(得分:2)

我过去经常做你正在做的事情。

我的建议是使用crosstool-ng(http://crosstool-ng.github.io),因为它以自动方式完成所有事情。

如果您正在学习m68k程序集,我曾经主持Matt Godbolt(https://godbolt.org/)修改后的gcc-explorer版本。您可以在此处找到可运行的泊坞窗图片(https://hub.docker.com/r/esantoro/acso-explorer/)以及此处的更多详细信息(https://znpy.wordpress.com/2017/05/08/decommisioning-acso-explorer-santoro-tk/

希望它有所帮助,

znpy

答案 1 :(得分:0)

您可以使用当前的Linux构建大多数版本。要安装先决条件,请查看https://github.com/bebbo/amiga-gcc

  • 解压缩gcc存档,例如到/opt/cross/gcc-6.5.0
  • 创建一个单独的构建文件夹,例如/opt/cross/xcc-6.5.0
  • 从该构建文件夹中配置

    cd /opt/cross/xcc-6.5.0/ /opt/cross/gcc-6.5.0/configure --target = m68k-elf --program-prefix = m68k-elf- --disable-libssp --disable-nls --disable-multilib --enable-languages = c,c ++ --prefix = / opt / cross / gcc65

  • 制作全gcc

  • 制作install-gcc

我还在https://franke.ms/cex/上为68k gccs运行编译器资源管理器