this post was submitted on 07 Sep 2023
64 points (97.1% liked)
Programming
17417 readers
84 users here now
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities !webdev@programming.dev
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Shared libraries save RAM.
Dynamic linking allows working around problematic libraries, or even adding functionality, if the app developer can't or won't.
Static linking makes sense sometimes, but not all the time.
Citation needed :) I was surprised but I read (sorry I can't find the source again) that in most cases dynamic linking are loaded 1 time, and usually very few times. This make RAM gain much less obvious. In addition static linking allows inlining which itself allow aggressive constant propagation and dead code elimination, in addition to LTO. All of this decrease the binary size sometimes in non negligeable ways.
That is easily disproved on my system by
cat /proc/*/maps
.Someone found the link to the article I was thinking about.
Ah, yes, I think I read Drew's post a few years ago. The message I take away from it is not that dynamic linking is without benefits, but merely that static linking isn't the end of the world (on systems like his).
Not exactly, shared libraries save cache.
Does this apply if the app is open source?
In practical terms often yes. It can be easier in practical terms to just
LD_PRELOAD
something than to maintain your own patched version of an RPM / APT package for example.