

When you have this kind of doubts, doesn't it occur to you to have a look at the way Gentoo does things? If you look at GCC's ebuild, it should take you to the toolchain eclass. Then, if you look at the ways in which the multilib USE flag is used in that eclass, a certain pair of options passed to the build system's configure script might catch your attention: --enable-multilib and --disable-multilib, documented here.Fulgurance wrote:GCC 64 can't generate 32 bits code normally?
NeddySeagoon wrote:I'm not a witch, I'm a retired electronics engineer
Ionen wrote:As a packager I just don't want things to get messier with weird build systems and multiple toolchains requirements though


Then why aren't you more specific and post both what you've done and what messages you got?Fulgurance wrote:Because I tried but I always get kind of error with missing 32 bits headers.
NeddySeagoon wrote:I'm not a witch, I'm a retired electronics engineer
Ionen wrote:As a packager I just don't want things to get messier with weird build systems and multiple toolchains requirements though

This does not tell us what headers were missing, or even how you determined that to be the explanation. It does not tell us enough that we could attempt to reproduce the problem, nor proofread for any mistakes you may have made. GDH-gentoo pointed out these omissions, and suggested that you be more specific.Fulgurance wrote:Because I tried but I always get kind of error with missing 32 bits headers.
Theoretically, everything should be possible if you just add enough files and configure everything accordingly ...Fulgurance wrote:Hi guys, I was just wondering from a few days if it's possible theoretically from a linux from scratch not build as multilib to build after the support for multilib. [...]

Exactly, but Hu was more patient and wrote it in a nicer way.Hu wrote:This does not tell us what headers were missing, or even how you determined that to be the explanation. It does not tell us enough that we could attempt to reproduce the problem, nor proofread for any mistakes you may have made.
NeddySeagoon wrote:I'm not a witch, I'm a retired electronics engineer
Ionen wrote:As a packager I just don't want things to get messier with weird build systems and multiple toolchains requirements though


Code: Select all
file included from /usr/include/features.h:527,
from /usr/include/bits/libc-header-start.h:33,
from /usr/include/stdio.h:27,
from ../../../../libgcc/../gcc/tsystem.h:87,
from ../../../../libgcc/generic-morestack.c:32:
/usr/include/gnu/stubs.h:7:11: fatal error: gnu/stubs-32.h: No such file or directory
7 | # include <gnu/stubs-32.h>
| ^~~~~~~~~~~~~~~~
compilation terminated.
/sources/ProgrammingTools-Main/Gcc/13.2.0/Sources/mainBuild/./gcc/xgcc -B/sources/ProgrammingTools-Main/Gcc/13.2.0/Sources/mainBuild/./gcc/ -B/usr/x86_64-pc-linux-gnu/bin/ -B/usr/x86_64-pc-linux-gnu/lib/ -isystem /usr/x86_64-pc-linux-gnu/include -isystem /usr/x86_64-pc-linux-gnu/sys-include -g -O2 -O2 -g -O2 -DIN_GCC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fpic -mlong-double-80 -DUSE_ELF_SYMVER -fcf-protection -mshstk -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -fpic -mlong-double-80 -DUSE_ELF_SYMVER -fcf-protection -mshstk -I. -I. -I../.././gcc -I../../../libgcc -I../../../libgcc/. -I../../../libgcc/../gcc -I../../../libgcc/../include -I../../../libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o _gcov_reset.o -MT _gcov_reset.o -MD -MP -MF _gcov_reset.dep -DL_gcov_reset -c ../../../libgcc/libgcov-interface.c
/sources/ProgrammingTools-Main/Gcc/13.2.0/Sources/mainBuild/./gcc/xgcc -B/sources/ProgrammingTools-Main/Gcc/13.2.0/Sources/mainBuild/./gcc/ -B/usr/x86_64-pc-linux-gnu/bin/ -B/usr/x86_64-pc-linux-gnu/lib/ -isystem /usr/x86_64-pc-linux-gnu/include -isystem /usr/x86_64-pc-linux-gnu/sys-include -g -O2 -O2 -g -O2 -DIN_GCC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fpic -mlong-double-80 -DUSE_ELF_SYMVER -fcf-protection -mshstk -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -fpic -mlong-double-80 -DUSE_ELF_SYMVER -fcf-protection -mshstk -I. -I. -I../.././gcc -I../../../libgcc -I../../../libgcc/. -I../../../libgcc/../gcc -I../../../libgcc/../include -I../../../libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o _gcov_lock_unlock.o -MT _gcov_lock_unlock.o -MD -MP -MF _gcov_lock_unlock.dep -DL_gcov_lock_unlock -c ../../../libgcc/libgcov-interface.c
make[4]: *** [../../../../libgcc/shared-object.mk:14: generic-morestack.o] Error 1
make[4]: Leaving directory '/sources/ProgrammingTools-Main/Gcc/13.2.0/Sources/mainBuild/x86_64-pc-linux-gnu/32/libgcc'
make[3]: *** [Makefile:1214: multi-do] Error 1
make[3]: Leaving directory '/sources/ProgrammingTools-Main/Gcc/13.2.0/Sources/mainBuild/x86_64-pc-linux-gnu/libgcc'
make[2]: *** [Makefile:127: all-multi] Error 2
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory '/sources/ProgrammingTools-Main/Gcc/13.2.0/Sources/mainBuild/x86_64-pc-linux-gnu/libgcc'
make[1]: *** [Makefile:14041: all-target-libgcc] Error 2
make[1]: Leaving directory '/sources/ProgrammingTools-Main/Gcc/13.2.0/Sources/mainBuild'
make: *** [Makefile:1042: all] Error 2
[[31m![0m] Failed to run make -j8 in /sources/ProgrammingTools-Main/Gcc/13.2.0/Sources//mainBuild with given environment
]0; \Code: Select all
6_64-unknow-linux-gnu-gcc -mx32 -nostdlib -nostartfiles -r -o /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/libc_pic.os \
-Wl,--whole-archive /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/libc_pic.a -o /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/libc_pic.os
x86_64-unknow-linux-gnu-gcc -mx32 -nostdlib -nostartfiles -r -o /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-allobjs.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-call-libc-early-init.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-call_fini.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-catch.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-close.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-debug.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-debug-symbols.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-deps.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-exception.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-execstack.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-find_object.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-fini.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-init.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-load.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-lookup.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-lookup-direct.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-minimal-malloc.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-misc.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-object.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-open.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-origin.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-printf.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-profile.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-reloc.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-runtime.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-scope.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-setup_hash.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-sort-maps.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-thread_gscope_wait.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-tls.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-tls_init_tp.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-trampoline.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-tunables.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-version.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-write.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-cache.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/tlsdesc.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-tlsdesc.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/tls_get_addr.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-get-cpu-features.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-audit.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-compat.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-diagnostics.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-diagnostics-cpu.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-diagnostics-kernel.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-environ.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-hwcaps.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-hwcaps-subdirs.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-hwcaps_split.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-libc_freeres.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-minimal.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-mutex.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-sysdep.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-usage.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/rtld.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-brk.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-getcwd.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-openat64.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-opendir.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-sbrk.os
for symbol in __GI___pthread_disable_asynccancel __GI___pthread_enable_asynccancel __libc_assert_fail __pthread_disable_asynccancel __pthread_enable_asynccancel calloc free malloc realloc __stack_chk_fail __stack_chk_fail_local; do \
echo ".globl $symbol"; \
echo "$symbol:"; \
done | x86_64-unknow-linux-gnu-gcc -mx32 -o /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/librtld.mapT.o -g -Werror=undef -Wa,--noexecstack -c -x assembler -
x86_64-unknow-linux-gnu-gcc -mx32 -nostdlib -nostartfiles -r -o /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/librtld.map.o /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/librtld.mapT.o '-Wl,-(' /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/dl-allobjs.os /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/libc_pic.a -lgcc '-Wl,-)' -Wl,-Map,/sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/librtld.mapT
/usr/lib/gcc/x86_64-unknow-linux-gnu/13.2.0/../../../../x86_64-unknow-linux-gnu/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-unknow-linux-gnu/13.2.0/libgcc.a when searching for -lgcc
/usr/lib/gcc/x86_64-unknow-linux-gnu/13.2.0/../../../../x86_64-unknow-linux-gnu/bin/ld: cannot find -lgcc: No such file or directory
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:1285: /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/mainBuild/elf/librtld.map] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory '/sources/ProgrammingTools-Main/Glibc/2.38.0/Sources/elf'
make[1]: *** [Makefile:484: elf/subdir_lib] Error 2
make[1]: Leaving directory '/sources/ProgrammingTools-Main/Glibc/2.38.0/Sources'
make: *** [Makefile:9: all] Error 2
[[31m![0m] Failed to run make -j8 in /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources//mainBuild with given environment
]0; \