Mike Gilbert <flop...@gentoo.org> writes:

> On Thu, Sep 14, 2023 at 10:25 AM Arsen Arsenović <ar...@gentoo.org> wrote:
>> Madhu <enom...@meer.net> writes:
>> > systemd-udev cannot be built as a static binary again presumably a
>> > carefully thought out design decision behind its design and
>> > philosophy.
>>
>> Since static linking is seldom a good idea, it is more likely that
>> simply nobody bothered.  I don't recall any udev components in systemd
>> v249 (which is the version I attempted to rebase eudev on top of) which
>> can't be static linked.
>
> The main issue is symbol conflicts with several major projects.
>
> systemd makes careful use of ELF symbol visibility (hidden symbols) to
> prevent conflicts when libudev or libsystemd are linked with other
> projects.
>
> As I understand it, it is up to the linker to apply any visibility
> rules. This doesn't work for static libs since the linker isn't
> actually involved in their creation. A static library is really just
> an archive with a bunch of unlinked ELF objects.
>
> Since the symbol visibility rules are not applied, attempting to link
> against libudev.a or libsystemd.a leads to symbol conflicts in
> packages like LVM2 and cryptsetup. There are some Gentoo bug reports
> about this, but I can't find them immediately.
>
> The systemd project (upstream) has chosen not to work around these
> conflicts by renaming symbols, and instead chooses not to support
> static linking at all. They see static libs as being defective by
> design. If the symbol visibility issue could be resolved at the
> toolchain level, they would probably be more willing to support it.

We can entertain the useless idea of static linking by trying partial
linking.  I can give that a shot later.  Thanks for the background.

Have a lovely day.
-- 
Arsen Arsenović

Attachment: signature.asc
Description: PGP signature

Reply via email to