Building cross-compilation tools under x86 Linux system (3)

Continued from the previous article: Building a cross-compilation tool under x86 Linux system (2)

This article refers to the following articles:

Build a cross compiler for arm (binutils-2.17 gcc-3.4.6 glibc-2.3.6)

Thank you very much!

The cross-environment of binutils was built last time, and this time we will build the cross-construction of the boot compiler.

2. Compile and build

2. Bootstrap Compiler Build

(1) Create a build-binutils folder under the build-tools directory

Go to the cross-compiler/build-tools directory. As follows:

~$ cd cross-compiler/build-tools/
~/cross-compiler/build-tool$ ls
binutils-2.41  binutils-2.41.tar.xz  build-binuitls  gcc-13.2.0.tar.xz  glibc-2.38.tar.xz

(2) Decompress the glibc source compression package

Use the tar command to decompress the glibc source code package. The actual commands and results are as follows (intercepted part):

$ tar xvf glibc-2.38.tar.xz 
……
glibc-2.38/wcsmbs/wcstoull_l.c
glibc-2.38/wcsmbs/wcswidth.c
glibc-2.38/wcsmbs/wcsxfrm.c
glibc-2.38/wcsmbs/wcsxfrm_l.c
glibc-2.38/wcsmbs/wctob.c
glibc-2.38/wcsmbs/wcwidth.c
glibc-2.38/wcsmbs/wcwidth.h
glibc-2.38/wcsmbs/wmemchr.c
glibc-2.38/wcsmbs/wmemcmp.c
glibc-2.38/wcsmbs/wmemcpy.c
glibc-2.38/wcsmbs/wmemmove.c
glibc-2.38/wcsmbs/wmempcpy.c
glibc-2.38/wcsmbs/wmemset.c
glibc-2.38/wctype/
glibc-2.38/wctype/Makefile
glibc-2.38/wctype/Versions
glibc-2.38/wctype/bits/
glibc-2.38/wctype/bits/wctype-wchar.h
glibc-2.38/wctype/bug-wctypeh.c
glibc-2.38/wctype/iswctype.c
glibc-2.38/wctype/iswctype_l.c
glibc-2.38/wctype/test_wcfuncs.c
glibc-2.38/wctype/test_wctype.c
glibc-2.38/wctype/towctrans.c
glibc-2.38/wctype/towctrans_l.c
glibc-2.38/wctype/wcfuncs.c
glibc-2.38/wctype/wcfuncs_l.c
glibc-2.38/wctype/wchar-lookup.h
glibc-2.38/wctype/wctrans.c
glibc-2.38/wctype/wctrans_l.c
glibc-2.38/wctype/wctype.c
glibc-2.38/wctype/wctype.h
glibc-2.38/wctype/wctype_l.c
$ 

After decompression, the contents of the glibc-2.38 directory are as follows:

$ ls glibc-2.38
abi-tags        crypt           iconv              Makeconfig     o-iterator.mk   socket
aclocal.m4      csu             iconvdata          Makefile       po              soft-fp
argp            ctype           include            Makefile.help  posix           stdio-common
assert          debug           inet               Makefile.in    pwd             stdlib
benchtests      dirent          INSTALL            Makerules      README          string
bits            dlfcn           intl               malloc         resolv          sunrpc
catgets         elf             io                 manual         resource        support
ChangeLog.old   extra-lib.mk    libc-abis          math           rt              sysdeps
config.h.in     gen-locales.mk  libio              mathvec        Rules           sysvipc
config.make.in  gmon            libof-iterator.mk  misc           scripts         termios
configure       gnulib          LICENSES           NEWS           SECURITY.md     test-skeleton.c
configure.ac    grp             locale             nis            setjmp          time
conform         gshadow         localedata         nptl           shadow          timezone
CONTRIBUTED-BY  hesiod          login              nptl_db        SHARED-FILES    version.h
COPYING         htl             mach               nscd           shlib-versions  wcsmbs
COPYING.LIB     hurd            MAINTAINERS        nss            signal          wctype

(3) Download glibc-linuxthreads source compression package

Go to the following page to download the gibc-linuxthreads source compression package: http://ftp.vim.org/ftp/gnu/glibc/

 Select glibc-linuxthreads-2.5.tar.bz2, download and put it into the ~/cross_compiler/build-tools directory.

(4) Unzip the glibc-linuxthreads source compression package

Enter the ~/cross-compiler/build-tools directory, and use the tar command to decompress the glibc-linuxthreads source code package. The actual commands and results are as follows:

$ tar xvf glibc-linuxthreads-2.5.tar.bz2 --directory=glibc-2.38
linuxthreads/
linuxthreads/ChangeLog
linuxthreads/Banner
linuxthreads/FAQ.html
linuxthreads/Changes
linuxthreads/Makeconfig
linuxthreads/LICENSE
linuxthreads/Examples/
linuxthreads/Examples/Makefile
linuxthreads/Examples/ex1.c
linuxthreads/Examples/ex10.c
linuxthreads/Examples/ex11.c
linuxthreads/Examples/ex12.c
linuxthreads/Examples/ex13.c
linuxthreads/Examples/ex14.c
linuxthreads/Examples/ex15.c
linuxthreads/Examples/ex16.c
linuxthreads/Examples/ex17.c
linuxthreads/Examples/ex18.c
linuxthreads/Examples/ex2.c
linuxthreads/Examples/ex3.c
linuxthreads/Examples/ex4.c
linuxthreads/Examples/ex5.c
linuxthreads/Examples/ex6.c
linuxthreads/Examples/ex7.c
linuxthreads/Examples/ex8.c
linuxthreads/Examples/ex9.c
linuxthreads/Examples/tststatic.c
linuxthreads/Makefile
linuxthreads/README
linuxthreads/README.Xfree3.2
linuxthreads/Versions
linuxthreads/alloca_cutoff.c
linuxthreads/attr.c
linuxthreads/barrier.c
linuxthreads/bug-sleep.c
linuxthreads/cancel.c
linuxthreads/condvar.c
linuxthreads/configure
linuxthreads/configure.in
linuxthreads/descr.h
linuxthreads/ecmutex.c
linuxthreads/errno.c
linuxthreads/events.c
linuxthreads/forward.c
linuxthreads/internals.h
linuxthreads/join.c
linuxthreads/joinrace.c
linuxthreads/libc-cancellation.c
linuxthreads/libc-tls-loc.c
linuxthreads/libc-tsd.c
linuxthreads/libc_pthread_init.c
linuxthreads/linuxthreads.texi
linuxthreads/lockfile.c
linuxthreads/manager.c
linuxthreads/mutex.c
linuxthreads/old_pthread_atfork.c
linuxthreads/oldsemaphore.c
linuxthreads/pt-allocrtsig.c
linuxthreads/pt-machine.c
linuxthreads/pt-system.c
linuxthreads/ptcleanup.c
linuxthreads/ptclock_gettime.c
linuxthreads/ptclock_settime.c
linuxthreads/ptfork.c
linuxthreads/pthandles.c
linuxthreads/pthread.c
linuxthreads/pthread_atfork.c
linuxthreads/pthread_setegid.c
linuxthreads/pthread_seteuid.c
linuxthreads/pthread_setgid.c
linuxthreads/pthread_setregid.c
linuxthreads/pthread_setresgid.c
linuxthreads/pthread_setresuid.c
linuxthreads/pthread_setreuid.c
linuxthreads/pthread_setuid.c
linuxthreads/queue.h
linuxthreads/restart.h
linuxthreads/rwlock.c
linuxthreads/semaphore.c
linuxthreads/semaphore.h
linuxthreads/shlib-versions
linuxthreads/sighandler.c
linuxthreads/signals.c
linuxthreads/specific.c
linuxthreads/spinlock.c
linuxthreads/spinlock.h
linuxthreads/tst-_res1.c
linuxthreads/tst-_res1mod1.c
linuxthreads/tst-_res1mod2.c
linuxthreads/tst-align.c
linuxthreads/tst-attr1.c
linuxthreads/tst-cancel-static.c
linuxthreads/tst-cancel-wrappers.sh
linuxthreads/tst-cancel.c
linuxthreads/tst-cancel1.c
linuxthreads/tst-cancel2.c
linuxthreads/tst-cancel3.c
linuxthreads/tst-cancel4.c
linuxthreads/tst-cancel5.c
linuxthreads/tst-cancel6.c
linuxthreads/tst-cancel7.c
linuxthreads/tst-cancel8.c
linuxthreads/tst-clock1.c
linuxthreads/tst-context.c
linuxthreads/tst-popen.c
linuxthreads/tst-popen2.c
linuxthreads/tst-sighandler1.c
linuxthreads/tst-sighandler2.c
linuxthreads/tst-signal.c
linuxthreads/tst-signal.sh
linuxthreads/tst-stack1.c
linuxthreads/tst-stackguard1-static.c
linuxthreads/tst-stackguard1.c
linuxthreads/tst-static-locale.c
linuxthreads/tst-tls1.c
linuxthreads/tst-tls1.h
linuxthreads/tst-tls1mod.c
linuxthreads/tst-tls1moda.c
linuxthreads/tst-tls1modb.c
linuxthreads/tst-tls1modc.c
linuxthreads/tst-tls1modd.c
linuxthreads/tst-tls1mode.c
linuxthreads/tst-tls1modf.c
linuxthreads/tst-tls2.sh
linuxthreads/tst-tsd1.c
linuxthreads/tststack.c
linuxthreads/unload.c
linuxthreads/man/
linuxthreads/man/Makefile
linuxthreads/man/pthread_atfork.man
linuxthreads/man/pthread_attr_init.man
linuxthreads/man/pthread_cancel.man
linuxthreads/man/pthread_cleanup_push.man
linuxthreads/man/pthread_cond_init.man
linuxthreads/man/pthread_condattr_init.man
linuxthreads/man/pthread_create.man
linuxthreads/man/pthread_detach.man
linuxthreads/man/pthread_equal.man
linuxthreads/man/pthread_exit.man
linuxthreads/man/pthread_join.man
linuxthreads/man/pthread_key_create.man
linuxthreads/man/pthread_kill_other_threads_np.man
linuxthreads/man/pthread_mutex_init.man
linuxthreads/man/pthread_mutexattr_init.man
linuxthreads/man/pthread_mutexattr_setkind_np.man
linuxthreads/man/pthread_once.man
linuxthreads/man/pthread_self.man
linuxthreads/man/pthread_setschedparam.man
linuxthreads/man/pthread_sigmask.man
linuxthreads/man/sem_init.man
linuxthreads/man/troffprepro
linuxthreads/sysdeps/
linuxthreads/sysdeps/alpha/
linuxthreads/sysdeps/alpha/elf/
linuxthreads/sysdeps/alpha/elf/pt-initfini.c
linuxthreads/sysdeps/alpha/pspinlock.c
linuxthreads/sysdeps/alpha/pt-machine.h
linuxthreads/sysdeps/alpha/tls.h
linuxthreads/sysdeps/cris/
linuxthreads/sysdeps/cris/pspinlock.c
linuxthreads/sysdeps/cris/pt-machine.h
linuxthreads/sysdeps/i386/
linuxthreads/sysdeps/i386/i486/
linuxthreads/sysdeps/i386/i486/pt-machine.h
linuxthreads/sysdeps/i386/i586/
linuxthreads/sysdeps/i386/i586/Versions
linuxthreads/sysdeps/i386/i586/pt-machine.h
linuxthreads/sysdeps/i386/Makefile
linuxthreads/sysdeps/i386/pspinlock.c
linuxthreads/sysdeps/i386/pt-machine.h
linuxthreads/sysdeps/i386/tcb-offsets.sym
linuxthreads/sysdeps/i386/tls.h
linuxthreads/sysdeps/i386/useldt.h
linuxthreads/sysdeps/i386/i686/
linuxthreads/sysdeps/i386/i686/Versions
linuxthreads/sysdeps/i386/i686/pt-machine.h
linuxthreads/sysdeps/ia64/
linuxthreads/sysdeps/ia64/Makefile
linuxthreads/sysdeps/ia64/Versions
linuxthreads/sysdeps/ia64/pspinlock.c
linuxthreads/sysdeps/ia64/pt-machine.h
linuxthreads/sysdeps/ia64/tcb-offsets.sym
linuxthreads/sysdeps/ia64/tls.h
linuxthreads/sysdeps/m68k/
linuxthreads/sysdeps/m68k/pspinlock.c
linuxthreads/sysdeps/m68k/pt-machine.h
linuxthreads/sysdeps/mips/
linuxthreads/sysdeps/mips/pspinlock.c
linuxthreads/sysdeps/mips/pt-machine.h
linuxthreads/sysdeps/mips/tls.h
linuxthreads/sysdeps/powerpc/
linuxthreads/sysdeps/powerpc/powerpc32/
linuxthreads/sysdeps/powerpc/powerpc32/pspinlock.c
linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h
linuxthreads/sysdeps/powerpc/Makefile
linuxthreads/sysdeps/powerpc/tcb-offsets.sym
linuxthreads/sysdeps/powerpc/tls.h
linuxthreads/sysdeps/powerpc/powerpc64/
linuxthreads/sysdeps/powerpc/powerpc64/pspinlock.c
linuxthreads/sysdeps/powerpc/powerpc64/pt-machine.h
linuxthreads/sysdeps/pthread/
linuxthreads/sysdeps/pthread/bits/
linuxthreads/sysdeps/pthread/bits/initspin.h
linuxthreads/sysdeps/pthread/bits/libc-lock.h
linuxthreads/sysdeps/pthread/bits/libc-tsd.h
linuxthreads/sysdeps/pthread/bits/pthreadtypes.h
linuxthreads/sysdeps/pthread/bits/typesizes.h
linuxthreads/sysdeps/pthread/Makefile
linuxthreads/sysdeps/pthread/Subdirs
linuxthreads/sysdeps/pthread/errno-loc.c
linuxthreads/sysdeps/pthread/flockfile.c
linuxthreads/sysdeps/pthread/ftrylockfile.c
linuxthreads/sysdeps/pthread/funlockfile.c
linuxthreads/sysdeps/pthread/gai_misc.h
linuxthreads/sysdeps/pthread/getcpuclockid.c
linuxthreads/sysdeps/pthread/herrno-loc.c
linuxthreads/sysdeps/pthread/list.h
linuxthreads/sysdeps/pthread/malloc-machine.h
linuxthreads/sysdeps/pthread/posix-timer.h
linuxthreads/sysdeps/pthread/pt-initfini.c
linuxthreads/sysdeps/pthread/pthread-functions.h
linuxthreads/sysdeps/pthread/pthread.h
linuxthreads/sysdeps/pthread/ptlongjmp.c
linuxthreads/sysdeps/pthread/res-state.c
linuxthreads/sysdeps/pthread/semaphore.h
linuxthreads/sysdeps/pthread/sigaction.c
linuxthreads/sysdeps/pthread/tcb-offsets.h
linuxthreads/sysdeps/pthread/timer_create.c
linuxthreads/sysdeps/pthread/timer_delete.c
linuxthreads/sysdeps/pthread/timer_getoverr.c
linuxthreads/sysdeps/pthread/timer_gettime.c
linuxthreads/sysdeps/pthread/timer_routines.c
linuxthreads/sysdeps/pthread/timer_settime.c
linuxthreads/sysdeps/pthread/tst-timer.c
linuxthreads/sysdeps/s390/
linuxthreads/sysdeps/s390/s390-32/
linuxthreads/sysdeps/s390/s390-32/pt-machine.h
linuxthreads/sysdeps/s390/Makefile
linuxthreads/sysdeps/s390/pspinlock.c
linuxthreads/sysdeps/s390/tcb-offsets.sym
linuxthreads/sysdeps/s390/tls.h
linuxthreads/sysdeps/s390/s390-64/
linuxthreads/sysdeps/s390/s390-64/pt-machine.h
linuxthreads/sysdeps/sh/
linuxthreads/sysdeps/sh/Makefile
linuxthreads/sysdeps/sh/pspinlock.c
linuxthreads/sysdeps/sh/pt-machine.h
linuxthreads/sysdeps/sh/tcb-offsets.sym
linuxthreads/sysdeps/sh/tls.h
linuxthreads/sysdeps/sparc/
linuxthreads/sysdeps/sparc/sparc32/
linuxthreads/sysdeps/sparc/sparc32/sparcv9/
linuxthreads/sysdeps/sparc/sparc32/sparcv9/Versions
linuxthreads/sysdeps/sparc/sparc32/sparcv9/pspinlock.c
linuxthreads/sysdeps/sparc/sparc32/pspinlock.c
linuxthreads/sysdeps/sparc/sparc32/pt-machine.h
linuxthreads/sysdeps/sparc/Makefile
linuxthreads/sysdeps/sparc/tcb-offsets.sym
linuxthreads/sysdeps/sparc/tls.h
linuxthreads/sysdeps/sparc/sparc64/
linuxthreads/sysdeps/sparc/sparc64/Versions
linuxthreads/sysdeps/sparc/sparc64/pspinlock.c
linuxthreads/sysdeps/sparc/sparc64/pt-machine.h
linuxthreads/sysdeps/unix/
linuxthreads/sysdeps/unix/sysv/
linuxthreads/sysdeps/unix/sysv/linux/
linuxthreads/sysdeps/unix/sysv/linux/Makefile
linuxthreads/sysdeps/unix/sysv/linux/Implies
linuxthreads/sysdeps/unix/sysv/linux/alpha/
linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/
linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h
linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h
linuxthreads/sysdeps/unix/sysv/linux/alpha/Makefile
linuxthreads/sysdeps/unix/sysv/linux/alpha/Versions
linuxthreads/sysdeps/unix/sysv/linux/alpha/aio_cancel.c
linuxthreads/sysdeps/unix/sysv/linux/alpha/pt-sigsuspend.S
linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h
linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S
linuxthreads/sysdeps/unix/sysv/linux/Versions
linuxthreads/sysdeps/unix/sysv/linux/allocalim.h
linuxthreads/sysdeps/unix/sysv/linux/allocrtsig.c
linuxthreads/sysdeps/unix/sysv/linux/execve.c
linuxthreads/sysdeps/unix/sysv/linux/fork.c
linuxthreads/sysdeps/unix/sysv/linux/fork.h
linuxthreads/sysdeps/unix/sysv/linux/jmp-unwind.c
linuxthreads/sysdeps/unix/sysv/linux/mq_notify.c
linuxthreads/sysdeps/unix/sysv/linux/pt-sigsuspend.c
linuxthreads/sysdeps/unix/sysv/linux/raise.c
linuxthreads/sysdeps/unix/sysv/linux/register-atfork.c
linuxthreads/sysdeps/unix/sysv/linux/sigwait.c
linuxthreads/sysdeps/unix/sysv/linux/smp.h
linuxthreads/sysdeps/unix/sysv/linux/unregister-atfork.c
linuxthreads/sysdeps/unix/sysv/linux/bits/
linuxthreads/sysdeps/unix/sysv/linux/bits/local_lim.h
linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h
linuxthreads/sysdeps/unix/sysv/linux/bits/sigthread.h
linuxthreads/sysdeps/unix/sysv/linux/i386/
linuxthreads/sysdeps/unix/sysv/linux/i386/dl-sysdep.h
linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
linuxthreads/sysdeps/unix/sysv/linux/i386/vfork.S
linuxthreads/sysdeps/unix/sysv/linux/ia64/
linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/
linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h
linuxthreads/sysdeps/unix/sysv/linux/ia64/Makefile
linuxthreads/sysdeps/unix/sysv/linux/ia64/Versions
linuxthreads/sysdeps/unix/sysv/linux/ia64/dl-sysdep.h
linuxthreads/sysdeps/unix/sysv/linux/ia64/fork.h
linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-initfini.c
linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-sigsuspend.c
linuxthreads/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h
linuxthreads/sysdeps/unix/sysv/linux/ia64/vfork.S
linuxthreads/sysdeps/unix/sysv/linux/m68k/
linuxthreads/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h
linuxthreads/sysdeps/unix/sysv/linux/m68k/vfork.S
linuxthreads/sysdeps/unix/sysv/linux/mips/
linuxthreads/sysdeps/unix/sysv/linux/mips/mips64/
linuxthreads/sysdeps/unix/sysv/linux/mips/mips64/sysdep-cancel.h
linuxthreads/sysdeps/unix/sysv/linux/mips/Makefile
linuxthreads/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h
linuxthreads/sysdeps/unix/sysv/linux/mips/vfork.S
linuxthreads/sysdeps/unix/sysv/linux/powerpc/
linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/
linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S
linuxthreads/sysdeps/unix/sysv/linux/powerpc/Makefile
linuxthreads/sysdeps/unix/sysv/linux/powerpc/Versions
linuxthreads/sysdeps/unix/sysv/linux/powerpc/ptlongjmp.c
linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/
linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S
linuxthreads/sysdeps/unix/sysv/linux/s390/
linuxthreads/sysdeps/unix/sysv/linux/s390/bits/
linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h
linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/
linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c
linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S
linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/
linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c
linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-sigsuspend.c
linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S
linuxthreads/sysdeps/unix/sysv/linux/sh/
linuxthreads/sysdeps/unix/sysv/linux/sh/pt-initfini.c
linuxthreads/sysdeps/unix/sysv/linux/sh/smp.h
linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
linuxthreads/sysdeps/unix/sysv/linux/sh/vfork.S
linuxthreads/sysdeps/unix/sysv/linux/sparc/
linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/
linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h
linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h
linuxthreads/sysdeps/unix/sysv/linux/sparc/Versions
linuxthreads/sysdeps/unix/sysv/linux/sparc/aio_cancel.c
linuxthreads/sysdeps/unix/sysv/linux/sparc/fork.h
linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/
linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/
linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/pt-sigsuspend.c
linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S
linuxthreads/sysdeps/unix/sysv/linux/x86_64/
linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile
linuxthreads/sysdeps/unix/sysv/linux/x86_64/pt-sigsuspend.c
linuxthreads/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
linuxthreads/sysdeps/unix/sysv/linux/x86_64/vfork.S
linuxthreads/sysdeps/x86_64/
linuxthreads/sysdeps/x86_64/Makefile
linuxthreads/sysdeps/x86_64/Versions
linuxthreads/sysdeps/x86_64/pspinlock.c
linuxthreads/sysdeps/x86_64/pt-machine.h
linuxthreads/sysdeps/x86_64/tcb-offsets.sym
linuxthreads/sysdeps/x86_64/tls.h
linuxthreads_db/
linuxthreads_db/ChangeLog
linuxthreads_db/Banner
linuxthreads_db/Makefile
linuxthreads_db/Versions
linuxthreads_db/proc_service.h
linuxthreads_db/shlib-versions
linuxthreads_db/td_init.c
linuxthreads_db/td_log.c
linuxthreads_db/td_symbol_list.c
linuxthreads_db/td_ta_clear_event.c
linuxthreads_db/td_ta_delete.c
linuxthreads_db/td_ta_enable_stats.c
linuxthreads_db/td_ta_event_addr.c
linuxthreads_db/td_ta_event_getmsg.c
linuxthreads_db/td_ta_get_nthreads.c
linuxthreads_db/td_ta_get_ph.c
linuxthreads_db/td_ta_get_stats.c
linuxthreads_db/td_ta_map_id2thr.c
linuxthreads_db/td_ta_map_lwp2thr.c
linuxthreads_db/td_ta_new.c
linuxthreads_db/td_ta_reset_stats.c
linuxthreads_db/td_ta_set_event.c
linuxthreads_db/td_ta_setconcurrency.c
linuxthreads_db/td_ta_thr_iter.c
linuxthreads_db/td_ta_tsd_iter.c
linuxthreads_db/td_thr_clear_event.c
linuxthreads_db/td_thr_dbresume.c
linuxthreads_db/td_thr_dbsuspend.c
linuxthreads_db/td_thr_event_enable.c
linuxthreads_db/td_thr_event_getmsg.c
linuxthreads_db/td_thr_get_info.c
linuxthreads_db/td_thr_getfpregs.c
linuxthreads_db/td_thr_getgregs.c
linuxthreads_db/td_thr_getxregs.c
linuxthreads_db/td_thr_getxregsize.c
linuxthreads_db/td_thr_set_event.c
linuxthreads_db/td_thr_setfpregs.c
linuxthreads_db/td_thr_setgregs.c
linuxthreads_db/td_thr_setprio.c
linuxthreads_db/td_thr_setsigpending.c
linuxthreads_db/td_thr_setxregs.c
linuxthreads_db/td_thr_sigsetmask.c
linuxthreads_db/td_thr_tls_get_addr.c
linuxthreads_db/td_thr_tlsbase.c
linuxthreads_db/td_thr_tsd.c
linuxthreads_db/td_thr_validate.c
linuxthreads_db/thread_db.h
linuxthreads_db/thread_dbP.h
$ 

View the contents of the glibc-2.38 directory again:

$ ls glibc-2.38
abi-tags    ChangeLog.old   COPYING      dlfcn           gshadow    inet               LICENSES         MAINTAINERS    manual   nptl_db        README       setjmp          stdio-common  termios
aclocal.m4  config.h.in     COPYING.LIB  elf             hesiod     INSTALL            linuxthreads     Makeconfig     math     nscd           resolv       shadow          stdlib        test-skeleton.c
argp        config.make.in  crypt        extra-lib.mk    htl        intl               linuxthreads_db  Makefile       mathvec  nss            resource     SHARED-FILES    string        time
assert      configure       csu          gen-locales.mk  hurd       io                 locale           Makefile.help  misc     o-iterator.mk  rt           shlib-versions  sunrpc        timezone
benchtests  configure.ac    ctype        gmon            iconv      libc-abis          localedata       Makefile.in    NEWS     po             Rules        signal          support       version.h
bits        conform         debug        gnulib          iconvdata  libio              login            Makerules      nis      posix          scripts      socket          sysdeps       wcsmbs
catgets     CONTRIBUTED-BY  dirent       grp             include    libof-iterator.mk  mach             malloc         nptl     pwd            SECURITY.md  soft-fp         sysvipc       wctype

As you can see, there are two more directories, linuxthreads and linuxthreads_db. The contents are as follows:

$ ls glibc-2.38/linuxthreads/
alloca_cutoff.c  configure.in  joinrace.c           man                   pthandles.c          pthread_setuid.c  shlib-versions  tst-cancel2.c           tst-clock1.c       tst-signal.sh             tst-tls1mod.c
attr.c           descr.h       libc-cancellation.c  manager.c             pthread_atfork.c     pt-machine.c      sighandler.c    tst-cancel3.c           tst-context.c      tst-stack1.c              tst-tls1modc.c
Banner           ecmutex.c     libc_pthread_init.c  mutex.c               pthread.c            pt-system.c       signals.c       tst-cancel4.c           tst-popen2.c       tststack.c                tst-tls1modd.c
barrier.c        errno.c       libc-tls-loc.c       old_pthread_atfork.c  pthread_setegid.c    queue.h           specific.c      tst-cancel5.c           tst-popen.c        tst-stackguard1.c         tst-tls1mode.c
bug-sleep.c      events.c      libc-tsd.c           oldsemaphore.c        pthread_seteuid.c    README            spinlock.c      tst-cancel6.c           tst-_res1.c        tst-stackguard1-static.c  tst-tls1modf.c
cancel.c         Examples      LICENSE              pt-allocrtsig.c       pthread_setgid.c     README.Xfree3.2   spinlock.h      tst-cancel7.c           tst-_res1mod1.c    tst-static-locale.c       tst-tls2.sh
ChangeLog        FAQ.html      linuxthreads.texi    ptcleanup.c           pthread_setregid.c   restart.h         sysdeps         tst-cancel8.c           tst-_res1mod2.c    tst-tls1.c                tst-tsd1.c
Changes          forward.c     lockfile.c           ptclock_gettime.c     pthread_setresgid.c  rwlock.c          tst-align.c     tst-cancel.c            tst-sighandler1.c  tst-tls1.h                unload.c
condvar.c        internals.h   Makeconfig           ptclock_settime.c     pthread_setresuid.c  semaphore.c       tst-attr1.c     tst-cancel-static.c     tst-sighandler2.c  tst-tls1moda.c            Versions
configure        join.c        Makefile             ptfork.c              pthread_setreuid.c   semaphore.h       tst-cancel1.c   tst-cancel-wrappers.sh  tst-signal.c       tst-tls1modb.c
$ ls glibc-2.38/linuxthreads_db
Banner          td_init.c            td_ta_enable_stats.c  td_ta_get_stats.c    td_ta_setconcurrency.c  td_thr_dbresume.c      td_thr_getgregs.c     td_thr_setfpregs.c      td_thr_sigsetmask.c    thread_db.h
ChangeLog       td_log.c             td_ta_event_addr.c    td_ta_map_id2thr.c   td_ta_set_event.c       td_thr_dbsuspend.c     td_thr_get_info.c     td_thr_setgregs.c       td_thr_tlsbase.c       thread_dbP.h
Makefile        td_symbol_list.c     td_ta_event_getmsg.c  td_ta_map_lwp2thr.c  td_ta_thr_iter.c        td_thr_event_enable.c  td_thr_getxregs.c     td_thr_setprio.c        td_thr_tls_get_addr.c  Versions
proc_service.h  td_ta_clear_event.c  td_ta_get_nthreads.c  td_ta_new.c          td_ta_tsd_iter.c        td_thr_event_getmsg.c  td_thr_getxregsize.c  td_thr_setsigpending.c  td_thr_tsd.c
shlib-versions  td_ta_delete.c       td_ta_get_ph.c        td_ta_reset_stats.c  td_thr_clear_event.c    td_thr_getfpregs.c     td_thr_set_event.c    td_thr_setxregs.c       td_thr_validate.c

(5) Create and enter the build-glibc-headers folder

Create the build-glibc-headers directory under the cross-compiler/build-tools directory and enter it. As follows:

~/cross-compiler/build-tools$ mkdir build-glibc-headers
~/cross-compiler/build-tools$ cd build-glibc-headers/
~/cross-compiler/build-tools/build-glibc-headers$ 

(6) configuration

Execute configure to configure glibc. The actual commands and results are as follows:

$ ../glibc-2.38/configure --host=arm-linux --prefix="/usr" --enable-add-ons=linuxthreads --with-headers=/usr/local/arm/arm-linux/include/
checking build system type... x86_64-pc-linux-gnu
checking host system type... arm-unknown-linux-gnu
checking for arm-linux-gcc... no
checking for gcc... gcc
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking for gcc... gcc
checking for arm-linux-g++... no
checking for arm-linux-c++... no
checking for arm-linux-gpp... no
checking for arm-linux-aCC... no
checking for arm-linux-CC... no
checking for arm-linux-cxx... no
checking for arm-linux-cc++... no
checking for arm-linux-cl.exe... no
checking for arm-linux-FCC... no
checking for arm-linux-KCC... no
checking for arm-linux-RCC... no
checking for arm-linux-xlC_r... no
checking for arm-linux-xlC... no
checking for arm-linux-clang++... no
checking for g++... g++
checking whether the compiler supports GNU C++... yes
checking whether g++ accepts -g... yes
checking for g++ option to enable C++11 features... none needed
checking whether g++ can link programs... yes
checking for sysdeps preconfigure fragments... aarch64 alpha arc arm configure: WARNING: arm/preconfigure: Did not find ARM architecture type; using default
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
csky hppa i386 loongarch m68k microblaze checking for grep that handles long lines and -e... (cached) /usr/bin/grep
checking for egrep... (cached) /usr/bin/grep -E
mips nios2 or1k powerpc riscv s390 sh checking for grep that handles long lines and -e... (cached) /usr/bin/grep
checking for egrep... (cached) /usr/bin/grep -E
sparc x86_64 
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln -s works... yes
checking for ld... ld
checking version of ld... 2.38, ok
checking for gnumake... no
checking for gmake... no
checking for make... make
checking version of make... 4.3, ok
checking for gnumsgfmt... no
checking for gmsgfmt... no
checking for msgfmt... msgfmt
checking version of msgfmt... 0.21, ok
checking for makeinfo... makeinfo
checking version of makeinfo... 6.8, ok
checking for sed... sed
checking version of sed... 4.8, ok
checking for gawk... gawk
checking version of gawk... 5.1.1, ok
checking for bison... bison
checking version of bison... 3.8.2, ok
checking if gcc is sufficient to build libc... yes
checking for python3... python3
checking version of python3... 3.11.2, ok
checking for use of fpu sysdeps directories... yes
checking for -fstack-protector... yes
checking for -fstack-protector-strong... yes
checking for -fstack-protector-all... yes
checking for assembler and linker STT_GNU_IFUNC support... yes
checking for gcc attribute ifunc support... yes
checking whether the linker supports textrels along with ifunc... yes
checking for GNU attribute retain support... yes
checking if compiler warns about alias for function with incompatible types... yes
checking sysdep dirs... sysdeps/unix/sysv/linux/arm/le sysdeps/unix/sysv/linux/arm sysdeps/arm/nptl sysdeps/unix/sysv/linux sysdeps/nptl sysdeps/pthread sysdeps/gnu sysdeps/unix/inet sysdeps/unix/sysv sysdeps/unix/arm sysdeps/unix sysdeps/posix sysdeps/arm/le sysdeps/arm sysdeps/wordsize-32 sysdeps/ieee754/flt-32 sysdeps/ieee754/dbl-64 sysdeps/ieee754 sysdeps/generic
checking LD_LIBRARY_PATH variable... ok
checking for bash... /usr/bin/bash
checking for perl... /usr/bin/perl
checking for install-info... /usr/bin/install-info
checking for .set assembler directive... yes
checking linker support for protected data symbol... yes
checking linker support for INSERT in linker script... yes
checking for broken __attribute__((alias()))... no
checking whether to put _rtld_local into .sdata section... no
checking for libunwind-support in compiler... no
checking whether --noexecstack is desirable for .S files... yes
checking for linker that supports -z execstack... yes
checking for linker that supports -z start-stop-gc... yes
checking for linker that supports --depaudit... yes
checking for linker that supports -z pack-relative-relocs... yes
checking for linker that supports --no-dynamic-linker... yes
checking for -static-pie... yes
checking for -fpie... yes
checking for GLOB_DAT reloc... yes
checking for -mtls-dialect=gnu2... yes
checking if -Wno-ignored-attributes is required for aliases... 
checking whether cc puts quotes around section names... no
checking for __builtin_memset... yes
checking for redirection of built-in functions... yes
checking for compiler option to disable generation of FMA instructions... -ffp-contract=off
checking for compiler option that -fsignaling-nans... -fsignaling-nans
checking if gcc accepts -fno-tree-loop-distribute-patterns with __attribute__ ((__optimize__))... yes
checking for libgd... no
checking for is_selinux_enabled in -lselinux... no
checking for maximum supported _FORTIFY_SOURCE level... 3
checking whether the assembler requires one version per symbol... no
checking for __builtin_trap with no external dependencies... yes
checking whether the C++ compiler supports thread_local... yes
running configure fragment for sysdeps/unix/sysv/linux
checking installed Linux kernel header files... missing or too old!
configure: error: GNU libc requires kernel header files from
Linux 3.2.0 or later to be installed before configuring.
The kernel header files are found usually in /usr/include/asm and
/usr/include/linux; make sure these directories use files from
Linux 3.2.0 or later.  This check uses <linux/version.h>, so
make sure that file was built correctly when installing the kernel header
files.  To use kernel headers not from /usr/include/linux, use the
configure option --with-headers.

(7) compile

Execute the make command to compile glibc. The actual commands and results are as follows:

~/cross-compiler/build-tools/build-glibc-headers$ make cross-compiling=yes install_root=/usr/local/arm/arm-linux/ prefix="" build_directory=../build-glibc-headers install-headers
make: *** 没有规则可制作目标“install-headers”。 停止。

Switch the directory to glibc-2.38, and run the above command again:

~/cross-compiler/build-tools/build-glibc-headers$ cd ../glibc-2.38/
~/cross-compiler/build-tools/glibc-2.38$ make cross-compiling=yes install_root=/usr/local/arm/arm-linux/ prefix="" build_directory=../build-glibc-headers install-headers
Makeconfig:43: *** objdir must be defined by the build-directory Makefile。 停止。

There are certain problems, maybe version problems, maybe other problems. need to be resolved further.

Guess you like

Origin blog.csdn.net/phmatthaus/article/details/132358399