".so" files should be installed into SOBJS: assign / sys:SObjs
This files has to be distributed with the executable file, and installed into the SObjs:, (it won’t be logical to install in the SDK: not every user is a developer.)
(NutsAboutAmiga)
Basilisk II for AmigaOS4 AmigaInputAnywhere Excalibur and other tools and apps.
Perfect thanks, I see, yes rpath set in /SObjs. Do not often see shared objects being used so far in my time using NG amiga, especially since they still are properly "shared", or so I hear.
Is there anything similar to LD_LIBRARY_PATH on the Amiga? Or, must these SO be in /SObjs?
I mean, it is still broken anyway for users who do not have an SDK. You install the libraries from OS4Depot, and they do not even in their autoinstall scripts set up the libraries for you in SOBJs.
No objections from me, I will just have to manually do this.
If liberty means anything at all, it means the right to tell people what they do not want to hear. George Orwell.
I think .so objects are unnecessary complex, static compiled all the why for me, unless, so objects are dynamic loaded like plugin or something, even then I most likely pick the . library format, unless I worried about being hacked. Like SSL most likely should not be a shared amiga library, not that any plugin can’t be totally replaced.
Quote:
especially since they still are properly "shared", or so I hear.
No they not shared, they linked by ELF loader, just before program loads, but they can be loaded as plugins. for example if you ported XMMS you can use the plugin’s, without a major rewrite.
(NutsAboutAmiga)
Basilisk II for AmigaOS4 AmigaInputAnywhere Excalibur and other tools and apps.
Even without considering Amiga, I have thought of SO to also be overly complicated.
The SOBJ situation really seems quite messy to me. On linux, we have SOs in one location. The linker knows where they are, and subsequently, the loader knows where they are and I am not even talking about the memory. It is the fact that the file itself is in the same location. But, currently, they seem poorly implemented on the Amiga... I now have to copy over all the SO files that are relevant for all of my programs that are loading them in at run time from - say - newlib to sobj:. This is now two places where I have to keep consistency. If there was an additional method to the rpath, like LD_LOAD_LIBRARY then I would consider just pointing it at local/newlib/lib -I would considere even that preferrable to having both SOBJS and the libs in newlib.
I think I will just try reassigning SOBJS: to that location (or, append it to that assign) and see what happens. Probably not a good idea.
Anyway, I am wondering why no one else has raised this complexity with CMAKE. I guess you guys are generally just cross compiling?
Alternatively, re-build cmake statically.
=== In fact, this SOBJ situation is such a mess, I am giving up and either rebuilding it all statically or just cross compiling.
Edited by rjd324 on 2022/7/12 22:14:57
If liberty means anything at all, it means the right to tell people what they do not want to hear. George Orwell.
I guess you guys are generally just cross compiling?
The things I work on is natively compiled; I have not built anything using dynamic linking. I have had to make my own makefiles few times, or change things to build stuff.
(NutsAboutAmiga)
Basilisk II for AmigaOS4 AmigaInputAnywhere Excalibur and other tools and apps.
For sure I prefer it that way, rather than using the cross compiler. The issue comes generally when porting things though. Either some project is using cmake, or the configure scripts call things like pkg-config which is just seemingly broken on Amiga. It is easier to get these to work on a linux machine where these tools work, and even the core-utils are more solid. Unless you also create your home-brew'd Makefiles from scratch.
(Actually, pkg-config invoked from configure scripts does work on amiga but not very well. you need to be in the directory of the pkg-config binary to run, for example, pkg-config --exists sdl2, otherwise it will always exit code non zero, even if you have it in your lib/pkg-config).
If liberty means anything at all, it means the right to tell people what they do not want to hear. George Orwell.