3 ms·
You're wrong, tiresome and ignorant. Windows allows multiple instances of the same app to work via the WinSxS mechanism which keeps copies of basically every D
by fredsanford 8y ago
You're wrong, tiresome and ignorant.
Windows allows multiple instances of the same app to work via the WinSxS mechanism which keeps copies of basically every DLL ever installed, including system DLLs. So it is basically keeping duplicates of everything, regardless. This includes some executables as well. [1]
Before WinSxS you could achieve the same effect by keeping copies of the DLL dependencies in the app directory beside the executable. Windows would then choose the DLLs from the app current directory before looking at system directories and the path. [2]
Linux gives you the same choices and a couple more options.
Work with the system package manager [1].
Link dynamically and keep copies of differing DLLs in a different prefix and... take a size hit. [2]
Link statically and take a size hit.
Link dynamically and build everything yourself, minimizing your dependencies.
You can't do the last two with Windows, for the most part because you do not have source code.
So, which of those options do you choose?
You cannot have your cake and eat it too.
- AnIdiotOnTheNet 8y ago> Linux gives you the same choices and a couple more options. Only as the builder of an application. The application developers for Linux, on the whole, only ever chose option one, leaving everyone who uses their software no option that doesn't involve recompiling from source (which, as I've mentioned, is a ridiculous thing to expect people to do just to use your software). I have several dozen applications on Windows that are not installed. Many of them aren't even designed to be portable, yet were easily made such just by extracting their files from the installer into a directory. I can put these applications on a thumb drive and take them to an entirely different Windows system and run them without installing them their either. These directories are exactly as they'd exist in C:\Program Files. This is of course because they have copies of their dependent DLLs in their install directory, but only the ones that aren't part of the Windows distribution. Let's look at one: WinDirStat. It is 2.1MB total, 856KB for the executables, 844KB for dlls, and the rest is assets, docs, and configuration. This is a GUI application, but you'll notice it doesn't have to include a toolkit because it uses the one that comes with every Windows install. The DLLs, as far as I can tell, are unique to WinDirStat, so it wouldn't be unfair to say that this application actually doesn't have any dependencies other than the base OS. That's what Linux can't get you. There is no base OS above syscalls. You can't depend on anything being there because there are hundreds of distributions and what's available to link with changes with configuration, distribution, and often version. If I could, I'd have all my Linux applications as AppImages which follows pretty much the same model as portable applications do on Windows. As I said though, Linux developers rarely offer that as an option.
- fredsanford 8y ago>> Only as the builder of an application. The application developers for Linux, on the whole, only ever chose option one, Again, wrong. The people that package distributions usually make these choices. Gentoo and distros like it give you a choice of how things are built. Off the top of my head I cannot think of a popular library that does not have the option to be statically or dynamically linked. >> I have several dozen applications on Windows that are not installed. Many of them aren't even designed to be portable, .... >> ... The DLLs, as far as I can tell, are unique to WinDirStat, so it wouldn't be unfair to say that this application actually doesn't have any dependencies other than the base OS. This works in Linux too, somewhat. You have to have compatible ABIs though. >> ... dependent DLLs in their install directory........ And Windows has 8 tons of different versions of system DLLs and C library runtimes in the WinSxS directories. MSVC runtimes are not interchangeable. Linux in general does not go to that length since a large majority of the apps are source available.