Я компилирую 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)'
Вот весь лог:
Оригинал (некоторые части на испанском языке)
английский перевод
Мой компилятор: MinGW-w64 x86-64 (из MSYS2)
Кросс-компилятор, который я пытаюсь собрать: Linux x86-64.
Я починил это. Я просто отключил multilib, потому что я могу просто собрать другой компилятор для 32-бит.
The errors are:
Пожалуйста, указывайте ошибки в своем вопросе. Все, что я вижу, это../machine/lib.a: No such file or directory
, откуда вы знаете, что «он включает 64-битные регистры»? Что включает? Не могли бы вы опубликовать команду./configure
в своем вопросе? Как вам./configure
d сборка? Какие параметры вы передали? Похоже, с самого начала он строится в 64-битном режиме.