Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Question about multilib and no multilib
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Unsupported Software
View previous topic :: View next topic  
Author Message
Fulgurance
Veteran
Veteran


Joined: 15 Feb 2017
Posts: 1200

PostPosted: Fri Dec 29, 2023 11:02 am    Post subject: Question about multilib and no multilib Reply with quote

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.
But I mean without chroot. Just with the system itself. GCC 64 can't generate 32 bits code normally?

Because I would like with my package manager to provide a way to perform that switch.
_________________
My actual project: https://github.com/Fulgurance/ISM

Ingenius Software Manager is a tool to build and manage a Linux system from scratch.
It will able to manage a linux installation just with a given path to the futur root path
Back to top
View user's profile Send private message
GDH-gentoo
Veteran
Veteran


Joined: 20 Jul 2019
Posts: 1533
Location: South America

PostPosted: Fri Dec 29, 2023 1:29 pm    Post subject: Reply with quote

Fulgurance wrote:
GCC 64 can't generate 32 bits code normally?

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.

So the answer to your question is probably "it depends on how the GCC that you use for building the LFS system was built itself". Now you have something to experiment with for testing that theory :)
_________________
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 :)
Back to top
View user's profile Send private message
Fulgurance
Veteran
Veteran


Joined: 15 Feb 2017
Posts: 1200

PostPosted: Fri Dec 29, 2023 3:21 pm    Post subject: Reply with quote

Oh I saw already.

I think my question wasn't clear enough.

I mean, If you build a system with gcc without multilib support, is it possible to after build gcc with multilib support, but without external compiler ?

Because I tried but I always get kind of error with missing 32 bits headers. I don't know if I am clear
_________________
My actual project: https://github.com/Fulgurance/ISM

Ingenius Software Manager is a tool to build and manage a Linux system from scratch.
It will able to manage a linux installation just with a given path to the futur root path
Back to top
View user's profile Send private message
GDH-gentoo
Veteran
Veteran


Joined: 20 Jul 2019
Posts: 1533
Location: South America

PostPosted: Fri Dec 29, 2023 3:46 pm    Post subject: Reply with quote

Fulgurance wrote:
Because I tried but I always get kind of error with missing 32 bits headers.

Then why aren't you more specific and post both what you've done and what messages you got?
_________________
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 :)
Back to top
View user's profile Send private message
Fulgurance
Veteran
Veteran


Joined: 15 Feb 2017
Posts: 1200

PostPosted: Fri Dec 29, 2023 5:16 pm    Post subject: Reply with quote

You try to help or just to provoke people ? My question was already clear, I just try politely actually to make you understand you didn't understand my question.

Actually you are just rude from the beginning to the end.

You can just say: oh did you see that post, I think this can help you.

It's more helpful ....
_________________
My actual project: https://github.com/Fulgurance/ISM

Ingenius Software Manager is a tool to build and manage a Linux system from scratch.
It will able to manage a linux installation just with a given path to the futur root path
Back to top
View user's profile Send private message
Hu
Moderator
Moderator


Joined: 06 Mar 2007
Posts: 21635

PostPosted: Fri Dec 29, 2023 5:38 pm    Post subject: Reply with quote

Standard advice in every support forum is that the request for help should make reasonable efforts to allow respondents to offer good advice. We have a direct statement of that in our Guidelines:
  • Include logs and tell us commands executed - Nobody can help you if they don't know what's wrong, or what you did to get the error you recieved. Providing this information will greatly aid others in assisting you, and will allow us to diagnose your problem easier and sooner.
The guidelines also direct readers to external resources that elaborate on this.

In this context:
Fulgurance wrote:
Because I tried but I always get kind of error with missing 32 bits headers.
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.

If you want helpful responses, then you should provide enough information that we can try to help. As is, you provide just enough that we can identify omissions and ask you to provide more information. That adds round trips, frustrates respondents, and apparently frustrates you, too.
Back to top
View user's profile Send private message
pietinger
Moderator
Moderator


Joined: 17 Oct 2006
Posts: 4160
Location: Bavaria

PostPosted: Fri Dec 29, 2023 5:51 pm    Post subject: Re: Question about multilib and no multilib Reply with quote

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. [...]

Theoretically, everything should be possible if you just add enough files and configure everything accordingly ...

My advice, however, is: Don't go down this route. It's unnecessarily complicated. Always install a multilib version and easily switch from multilib to no-multilib when needed ... And don't make any changes if multilib is required.

Yes, one day there will be no 32bit support - and therefore no multilib. Then every installation will be a no-multilib installation ... or a multilib of 64 bit and 128 bit ... :lol:
_________________
https://wiki.gentoo.org/wiki/User:Pietinger
Back to top
View user's profile Send private message
GDH-gentoo
Veteran
Veteran


Joined: 20 Jul 2019
Posts: 1533
Location: South America

PostPosted: Fri Dec 29, 2023 6:10 pm    Post subject: Reply with quote

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.

Exactly, but Hu was more patient and wrote it in a nicer way.
_________________
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 :)
Back to top
View user's profile Send private message
Fulgurance
Veteran
Veteran


Joined: 15 Feb 2017
Posts: 1200

PostPosted: Tue Jan 02, 2024 2:42 pm    Post subject: Reply with quote

I am sorry guys, I think I over reacted a bit.

It's just I would like to finish properly my project, and alone sometimes it's quite long :?

Sorry about that.

I will put more details. I just need to finish something first.

Excuse me
_________________
My actual project: https://github.com/Fulgurance/ISM

Ingenius Software Manager is a tool to build and manage a Linux system from scratch.
It will able to manage a linux installation just with a given path to the futur root path
Back to top
View user's profile Send private message
Fulgurance
Veteran
Veteran


Joined: 15 Feb 2017
Posts: 1200

PostPosted: Mon Jan 08, 2024 6:21 pm    Post subject: Reply with quote

So basically, to explain properly, with my own package manager I did, I installed a full Linux LFS, with openrc, without multilib support or 32/x32 support (to be clear)

My question is, from this installation, how can I install the multilib support with 32/x32 support ?

So first I installed for that binutils with multilib flag, installation gone well.

But then, if I try to compile gcc with multilib support and architecture for 32,x32 and 64 bits, I have this error about missing 32bits header:
Code:
 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
[!] Failed to run make -j8 in /sources/ProgrammingTools-Main/Gcc/13.2.0/Sources//mainBuild with given environment
]0; \


Full log: https://textup.fr/755125CT

So I saw normally this header is provided by Glibc, but if I try to compile Glibc, then I have got this error:
Code:
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
[!] Failed to run make -j8 in /sources/ProgrammingTools-Main/Glibc/2.38.0/Sources//mainBuild with given environment
]0; \


Full log: https://textup.fr/755127sL

Gcc version: 13.2.0
Glibc version: 2.38.0
Binutils version: 2.41.0
Linux kernel version: 6.5.1

Let me know if I should provide more informations.
_________________
My actual project: https://github.com/Fulgurance/ISM

Ingenius Software Manager is a tool to build and manage a Linux system from scratch.
It will able to manage a linux installation just with a given path to the futur root path
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Unsupported Software All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum