Linked by Thom Holwerda on Wed 9th Nov 2011 21:26 UTC, submitted by edwin
Thread beginning with comment 496999
To view parent comment, click here.
To read all comments associated with this story, please click here.
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[7]: binary for windows....
by bogomipz on Sat 12th Nov 2011 16:35
in reply to "RE[6]: binary for windows.... "
Not really a kernel problem as the dynamic linker isn't really in the kernel.
Sorry, I should have said that the process of loading the binary is kept simple.
When something is statically linked, the library is dissolved, what is not used the dead stripper should remove.
Yes, this is why dynamic linking does not necessarily result in lower memory usage.
Your system is not like static linking. It's like baking dynamic linking.
This is where I do not know what you are talking about.
Creating a static library results in a library archive. When linking a program, the necessary parts are copied from the archive into the final binary. My idea was simple to postpone this last compilation step until install time, so that the version of the static library that the package manager has made available on the system is the one being used.
This way, the modularity advantage of dynamic linking could have been implemented without introducing the load time complexity we have today.
RE[8]: binary for windows....
by moondevil on Sat 12th Nov 2011 17:00
in reply to "RE[7]: binary for windows.... "
RE[8]: binary for windows....
by jabjoe on Sat 12th Nov 2011 19:00
in reply to "RE[7]: binary for windows.... "
Sorry, I should have said that the process of loading the binary is kept simple.
At the cost of making updating or subsisting more complicated and run time subsisting impossible or more complicated.
Yes, this is why dynamic linking does not necessarily result in lower memory usage.
Only if you have one thing using the lib, or everything is barely using the lib and the dead strip gets most of it. It would be a very very rare case when it uses less disk or less RAM.
Creating a static library results in a library archive. When linking a program, the necessary parts are copied from the archive into the final binary.
Linking isn't just libs, it all the object files. A static lib is just a collection of object data. Linking is putting all this into a executable. With static linking it doesn't have to care about keeping stuff separate, you can optimize how ever you like. Your system would mean that you would need to keep the lib distinct. Think about when a function is called, you can't just address the function, why, because the lib sizes will change, thus the file layout, thus the address layout. So you call to a jmp which you change when you bake the libs. You do that, or you have to store every reference to every function in every lib and update them all at time of baking. Which isn't what you would do as it's insane. You would do the jmp redirection and keep the lib distinct. Your system is more like dynamic linking than static linking.
Right I've done a quick test using lsof and python, totalling up the file sizes for shared object files for all and unique. This gives a rough idea how much memory the current system uses and how much your would use.
Current system: 199 meg
Your system: 1261 meg
Disk will be worse because it will be everything, not just what is running. Might still not be much by disk standards, but by SD standards....
So although I still don't think the biggest thing is space used (it's management and simplicity), it certainly shouldn't be discounted.
Very smart people have been working on this kind of thing for many decades and there is a reason things are like they are.





Member since:
2009-05-06
Not really a kernel problem as the dynamic linker isn't really in the kernel.
http://en.wikipedia.org/wiki/Dynamic_linker#ELF-based_Unix-like_sys...
When something is statically linked, the library is dissolved, what is not used the dead stripper should remove. Your system is not like static linking. It's like baking dynamic linking.
Then you kind of loose some of the gains. You have to have dependencies sitting around waiting in case they are needed. Or you have a repository to pull them down from....
That was my point.
Yes.
As I said before, it's not really static, it's baked dynamic. Also if you have dependencies separate you either have loads kicking about in case they are need (Windows) or you have package management. If you have package management all you get out of this is baking dynamic linking. For no gain I can see.....
It's quite different as it's decentralized using these application folders. Application folders are often put forwards by some as a solution to dependencies.