Ошибка кросс-компиляции GLIBC 2.38 для SH4

Всех приветствую!

У меня возникла потребность скомпилировать GLIBC версии 2.38 (не ниже и не выше) на Linux, работающий на процессоре архитектуры SH4 x32. Одно условие: на целевой машине нет никаких компиляторов.

Я скачал исходники, создал директорию build, сконфигурировал это всё командой ../configure --host=sh4-linux-gnu --prefix=/home/aloyen/glibc-2.38/bincomp --disable-werror --disable-multi-arch и запустил make -j$(nproc). Но у меня возникает при компиляции такая ошибка:

make[2]: вход в каталог «/home/aloyen/glibc-2.38/signal»
sh4-linux-gnu-gcc ../sysdeps/unix/sysv/linux/sigtimedwait.c -c -std=gnu11 -fgnu89-inline  -fcommon -g -O2 -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 -Wall -Wwrite-strings -Wundef -fmerge-all-constants -frounding-math -fno-stack-protector -fno-common -Wp,-U_FORTIFY_SOURCE -Wstrict-prototypes -Wold-style-definition -fmath-errno  -mieee  -fPIE   -fexceptions -fasynchronous-unwind-tables  -ftls-model=initial-exec     -I../include -I/home/aloyen/glibc-2.38/build/signal  -I/home/aloyen/glibc-2.38/build  -I../sysdeps/unix/sysv/linux/sh/le/sh4/fpu  -I../sysdeps/unix/sysv/linux/sh/le/sh4  -I../sysdeps/unix/sysv/linux/sh/sh4  -I../sysdeps/unix/sysv/linux/sh/le  -I../sysdeps/unix/sysv/linux/sh  -I../sysdeps/sh/nptl  -I../sysdeps/unix/sysv/linux/include -I../sysdeps/unix/sysv/linux  -I../sysdeps/nptl  -I../sysdeps/pthread  -I../sysdeps/gnu  -I../sysdeps/unix/inet  -I../sysdeps/unix/sysv  -I../sysdeps/unix/sh  -I../sysdeps/unix  -I../sysdeps/posix  -I../sysdeps/sh/le/sh4/fpu  -I../sysdeps/sh/sh4/fpu  -I../sysdeps/sh/le/sh4  -I../sysdeps/sh/sh4  -I../sysdeps/sh/le  -I../sysdeps/sh  -I../sysdeps/wordsize-32  -I../sysdeps/ieee754/flt-32  -I../sysdeps/ieee754/dbl-64  -I../sysdeps/ieee754  -I../sysdeps/generic  -I.. -I../libio -I.  -D_LIBC_REENTRANT -include /home/aloyen/glibc-2.38/build/libc-modules.h -DMODULE_NAME=libc -include ../include/libc-symbols.h  -DPIC     -DTOP_NAMESPACE=glibc -o /home/aloyen/glibc-2.38/build/signal/sigtimedwait.o -MD -MP -MF /home/aloyen/glibc-2.38/build/signal/sigtimedwait.o.dt -MT /home/aloyen/glibc-2.38/build/signal/sigtimedwait.o
echo 'signal/signal.os signal/raise.os signal/killpg.os signal/sigaction.os signal/libc_sigaction.os signal/sigprocmask.os signal/kill.os signal/sigpending.os signal/sigsuspend.os signal/sigwait.os signal/sigblock.os signal/sigsetmask.os signal/sigpause.os signal/sigvec.os signal/sigstack.os signal/sigaltstack.os signal/sigintr.os signal/sigsetops.os signal/sigempty.os signal/sigfillset.os signal/sigaddset.os signal/sigdelset.os signal/sigismem.os signal/sigreturn.os signal/siggetmask.os signal/sysv_signal.os signal/sigisempty.os signal/sigandset.os signal/sigorset.os signal/allocrtsig.os signal/sigtimedwait.os signal/sigwaitinfo.os signal/sigqueue.os signal/sighold.os signal/sigrelse.os signal/sigignore.os signal/sigset.os' > /home/aloyen/glibc-2.38/build/signal/stamp.osT
mv -f /home/aloyen/glibc-2.38/build/signal/stamp.osT /home/aloyen/glibc-2.38/build/signal/stamp.os
/tmp/cc2bFSnr.s: Сообщения ассемблера:
/tmp/cc2bFSnr.s:746: Ошибка: символ «__sigtimedwait64» уже определён
make[2]: *** [/home/aloyen/glibc-2.38/build/sysd-rules:213: /home/aloyen/glibc-2.38/build/signal/sigtimedwait.o] Ошибка 1
make[2]: выход из каталога «/home/aloyen/glibc-2.38/signal»
make[1]: *** [Makefile:484: signal/subdir_lib] Ошибка 2
make[1]: выход из каталога «/home/aloyen/glibc-2.38»
make: *** [Makefile:9: all] Ошибка 2

Компиляцию запускал с параметром CFLAGS: -fcommon -g -O2

Все эти -fcommon -g --disable-multi-arch это прошлые попытки исправить положение: без них ничего не меняется.

Замечание: До определённого момента у меня возникали ошибки такого характера (сейчас это предупреждения, но раньше считались ошибками):

../include/time.h:21:1: warning: ‘asm’ declaration ignored due to conflict with previous rename [-Wpragmas]
   21 | libc_hidden_proto (mktime)
      | ^~~~~~~~~~~~~~~~~
../include/time.h:22:1: warning: ‘asm’ declaration ignored due to conflict with previous rename [-Wpragmas]
   22 | libc_hidden_proto (timelocal)
      | ^~~~~~~~~~~~~~~~~
../include/time.h:23:1: warning: ‘asm’ declaration ignored due to conflict with previous rename [-Wpragmas]
   23 | libc_hidden_proto (localtime)
      | ^~~~~~~~~~~~~~~~~

Было исправлено добавлением --disable-werror в команду ../configure. Может, эти ошибки как-то связаны?

Как это исправить?


Ответы (0 шт):