Date: Sat, 7 Jul 2012 11:54:08 -0400 (EDT) From: idunham@...abit.com To: musl@...ts.openwall.com Subject: Re: Hello > On Fri, 6 Jul 2012 16:14:17 -0700 (PDT) > idunham@...abit.com wrote: > >> >> > gtk2 will not work that way, I checked. One library in chain >> >> > requires libstdc++, libstdc++ defines 'unique' symbols (see >> >> > manual page of binutils nm) which musl linker cannot handle. >> >> > Additionally, there is much more missing symbols including >> >> > missing functions. But plain X11 apps worked (I checked xfontsel >> >> > and xlogo). >> >> >> >> Have you looked into building the apps/libs natively against musl >> >> except for the nvidia binary blob, to see if the blob works under >> >> that usage? I think that's a usage case that's a lot more >> >> applicable to real-world usage of musl, and in fact it's probably >> >> the first real reason anybody would be interested in having musl >> >> work with code that was built against glibc... >> The first step would probably be dropping a musl-compatible (generic, >> not gnu-linux) libstdc++ into the test environment. > > Bootstrapping libstdc++ I think even more nightmarish than dealing with > pkg-config or autohell, since this library is part of gcc. So I went in > another way: I've taken my package cache and relinked gtk2 and pango, > now they do not depend on libstdc++ (since they do not import things > from that library. Why they were linked to it - is another open > question.) Apparently this wouldn't be ABI compatible (IE-don't bother trying), but it isn't too hard: apply the musl patches, then (if they don't already do this) cd libstdc++-v3/os; rm gnu-linux; cp generic gnu-linux; cd - > After some dancing around undefined symbols I've got not-so-big list: > > __res_init(), __res_iclose(), inet_nsap_ntoa(), __res_maybe_init(), > initstate_r(), random_r() and stuff related to pthread scheduling: > pthread_setschedparam(), pthread_getschedparam(). > > Since that gtk2 and it's stuff do not require libstdc++ to work I'll > try to build them against musl. >> Also, I often set up a chroot with musl and build under that. If >> you'd rather not build the whole chroot yourself, you can prepare a >> chroot and follow the installation notes for converting a glibc-based >> system, using the chroot environment instead of a full install (this >> works well with Debian). >> If you do this, make sure not to do a plain cp of the system >> libraries; this would mess up the sonames, since lib*.so must be >> symlinks to lib*.so.<version>. It also really messes with ldconfig. > > Converting existing system maybe possible, but I will prefer to rebuild > all the stuff from scratch with musl and (possibly in future) with > different compiler(s) (I really tired from gcc/binutils, but there > seems no any alternatives written in C and able to build major > software like gtk2 and Linux kernel). Converting will be possible when > musl will be binary compatible with glibc, but this is not primary > goal. As a bonus, maybe. One issue here was that binary nvidia blob > that can be needed even after rebuild on desktop, so missing interfaces > were not big deal with it. Other things can be patched/recompiled. Converting a system (as described in musl/INSTALL) does not mean replacing libc; it means a parallel install of musl, move system libs out of the default search path, then change gcc to use musl by default. It would work even with an ABI-incompatible libc, since you leave ld-linux alone.
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.