a temporary solution and compromise is to forget about putting all the DSO/DLL/SO files into common system folder. Instead, ship the DLL's with the application in the same directory as the executable. I realize this defeats the purpose of libraries somewhat, but not entirely (and we need a working compromise in the meantime). For example, this allows a plugin system to work since the plugins are stored in the same directory as the program executable. So all plugins for lazarus would be stored near the lazarus.exe.
Yes this means multiple copies of the RTL.dll or RTL.so on the hard drive. But most people will not be using packages - only special larger applications like lazarus will be using the RTL.dll. So having multiple copies of RTL.dll is no big deal as a temporary compromise.
As a side note, what we do with Powtils/PSP is embed the DSO/DLL version number into the DLL, and any executable that tries to load the wrong DLL/DSO is simply quits with an error. The library version in Powtils/PSP is stored in an INI file and the user can specify which version to use.
(I removed the above paragraph from the main page, since discussion doesn't belong there, but here, and noticed it was here too)
Lars, you are absolutely right, but that is a workaround from the user perspective. The dealing with versioning on the main page is more from the developer perspective, how we can prevent very small differences in FPC version (e.g. like a recompile of exactly the same RTL with different optimization or debug settings) to directly be totally incompatible, to lessen the impact of that, and how to detect if the wrong dlls are used. (e.g. timestamping, or CRCs over interfaces).
Marcov 12:49, 14 August 2008 (CEST)
Packages and licenses?
Free Pascal has a LGPL license. This license is not contradictory with delivering Binary packages? Why the reference to GPL?
- Because the article is not only about FPC. Lazarus IDE *is* GPL. It even says so in the text.
- --BigChimp 12:14, 17 June 2013 (UTC)
- However, this part about the IDE: "(distributing binary only components linked against GPL is a GPL violation, dynamically linking is no different from static in the sense of the license). " is strange. The LGPL explictly states a DLL is not a derivative work so how could the GPL enforce this.
- I know the opinions about using DLLs with GPL code are split, but the article focuses on 1 side of the issue, not the other (which I happen to support ;) )
- --BigChimp 16:28, 28 February 2014 (CET)