newlib:编译器在构建 32 位兼容性时感到困惑

newlib: Compiler gets confused when building 32-bit compatibility

我正在编译 newlib,以便我可以继续构建我的交叉编译器,但是 newlib 与我的交叉编译器中也包含的 32 位支持混淆了。

我已经编译并安装了我的交叉编译器,但它缺少标准库和 libgcc,因此大多数程序无法编译,但不使用标准函数的程序只要 -nostdlib使用参数

如果你问我:“你应该改用 glibc!”,我会回答:它需要来自 Linux 的源文件,但 Linux 源代码无法播放Windows 很好,因为 Windows 认为由于不区分大小写的文件系统,某些文件是相同的。

错误是:

x86_64-linux-gnu-gcc  -m32 -DPACKAGE_NAME=\"newlib\" -DPACKAGE_TARNAME=\"newlib\" -DPACKAGE_VERSION=\"4.0.0\" -DPACKAGE_STRING=\"newlib\ 4.0.0\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -I. -I../../../../../../../newlib/newlib/libc/machine/x86_64 -fno-builtin -DMISSING_SYSCALL_NAMES -DHAVE_INIT_FINI     -fno-builtin -DMISSING_SYSCALL_NAMES -DHAVE_INIT_FINI   -nostdlib  -m32 -c -o lib_a-setjmp.o `test -f 'setjmp.S' || echo '../../../../../../../newlib/newlib/libc/machine/x86_64/'`setjmp.S
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S: Assembler messages:
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S:25: Error: bad register name `%rbx'
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S:26: Error: bad register name `%rbp'
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S:27: Error: bad register name `%r12'
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S:28: Error: bad register name `%r13'
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S:29: Error: bad register name `%r14'
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S:30: Error: bad register name `%r15'
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S:31: Error: bad register name `%rsp)'
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S:32: Error: bad register name `%rax'
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S:33: Error: bad register name `%rsp)'
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S:34: Error: bad register name `%rax'
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S:35: Error: bad register name `%rax'
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S:39: Error: bad register name `%rsi'
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S:41: Error: bad register name `%rdi)'
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S:44: Error: bad register name `%rdi)'
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S:45: Error: bad register name `%rdi)'
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S:46: Error: bad register name `%rdi)'
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S:47: Error: bad register name `%rdi)'
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S:48: Error: bad register name `%rdi)'
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S:49: Error: bad register name `%rdi)'
../../../../../../../newlib/newlib/libc/machine/x86_64/setjmp.S:50: Error: bad register name `%rdi)'

这是完整的日志:

Original (some parts are in Spanish)
English translation

我的编译器是:MinGW-w64 x86-64(来自 MSYS2)
我尝试构建的交叉编译器是:Linux x86-64

我修好了。我只是禁用了 multilib,因为我可以简单地为 32 位构建另一个编译器。