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.