digitalmars.D - how is std.loader supposed to work on linux?
- clayasaurus (31/31) Aug 18 2004 ok, so i've changed version(Linux) to version(linux),
- Matthew (13/42) Aug 18 2004 Unfortunately, std.loader suffered a schism due to Walter and I having s...
- John Reimer (6/19) Aug 19 2004 As Matthew suggested, -ldl should fix the problem. I was looking for a
- clayasaurus (4/11) Aug 19 2004 a shared library that allows me to access the screen, input, sound, etc....
ok, so i've changed version(Linux) to version(linux), compiled std.loader into phobos (for some reason std.loader is not compiled in linux as it is windows). Then I add version=TestMain to loader.d, and compile like so... dmd loader.d gcc loader.o -o loader -lphobos -lpthread -lm loader.o(.gnu.linkonce.t_D3std6loader13record_error_FZv+0x6): In function `_D3std6loader13record_error_FZv': : undefined reference to `dlerror' loader.o(.gnu.linkonce.t_D3std6loader15ExeModule_Load_FAaZT3std6lo der8HXModule+0x58): In function `_D3std6loader15ExeModule_Load_FAaZT3std6loader8HXModule': : undefined reference to `dlopen' loader.o(.gnu.linkonce.t_D3std6loader18ExeModule_Release_FKT3std6load r8HXModuleZv+0xcd): In function `_D3std6loader18ExeModule_Release_FKT3std6loader8HXModuleZv': : undefined reference to `dlclose' loader.o(.gnu.linkonce.t_D3std6loader20ExeModule_GetSymbol_FKT3std6loader8 XModuleAaZPv+0xc2): In function `_D3std6loader20ExeModule_GetSymbol_FKT3std6loader8HXModuleAaZPv': : undefined reference to `dlsym' collect2: ld returned 1 exit status --- errorlevel 1 So my question is, how am I suppose to get std.loader to work on linux? What I am trying to accomplish is the conversion of the currently windows only project derelict (dsource.org) to linux as well. Is std.loader on linux not done yet, or has it just been overlooked? Also, is std.loader designed so the only thing I have to change is SDL.dll to libSDL.so, or do I have to use different function calls? What can I do to get std.loader working on linux? Any suggestions would be welcome :) Thanks alot. byebye
Aug 18 2004
"clayasaurus" <clayasaurus gmail.com> wrote in message news:cg19j0$2tsh$1 digitaldaemon.com...ok, so i've changed version(Linux) to version(linux), compiled std.loader into phobos (for some reason std.loader is not compiled in linux as it is windows). Then I add version=TestMain to loader.d, and compile like so... dmd loader.d gcc loader.o -o loader -lphobos -lpthread -lm loader.o(.gnu.linkonce.t_D3std6loader13record_error_FZv+0x6): In function `_D3std6loader13record_error_FZv': : undefined reference to `dlerror' loader.o(.gnu.linkonce.t_D3std6loader15ExeModule_Load_FAaZT3std6loader8HXModule+0x58): In function `_D3std6loader15ExeModule_Load_FAaZT3std6loader8HXModule': : undefined reference to `dlopen' loader.o(.gnu.linkonce.t_D3std6loader18ExeModule_Release_FKT3std6loader8HXModuleZv+0xcd): In function `_D3std6loader18ExeModule_Release_FKT3std6loader8HXModuleZv': : undefined reference to `dlclose' loader.o(.gnu.linkonce.t_D3std6loader20ExeModule_GetSymbol_FKT3std6loader8HXModuleAaZPv+0xc2): In function `_D3std6loader20ExeModule_GetSymbol_FKT3std6loader8HXModuleAaZPv': : undefined reference to `dlsym' collect2: ld returned 1 exit status --- errorlevel 1 So my question is, how am I suppose to get std.loader to work on linux?Unfortunately, std.loader suffered a schism due to Walter and I having seriously divergent viewpoints on how to implement such a library. I think that's led to us not being terribly interested in it and/or assuming the other person would handle such issues. (Hmm, maybe I shouldn't attribute any such sentiments to big-W. But that's the way I see it, anyway.) Nonetheless, that attitude sucks badly, so I'll do my best. It seems that your problem on Linux is that you should also link libdl.a, i.e specify "-ldl" in your command.What I am trying to accomplish is the conversion of the currently windows only project derelict (dsource.org) to linux as well. Is std.loader on linux not done yet, or has it just been overlooked?It is supposed to be done. But, as I said, the whole lib's been kind of left to die. I am not a little ashamed of this, particularly since it's bearing my name, so want to address it again.Also, is std.loader designed so the only thing I have to change is SDL.dll to libSDL.so, or do I have to use different function calls?I don't know what SDL is, I'm afraid.What can I do to get std.loader working on linux? Any suggestions would be welcome :)"-dl" would be my first, best (and only) guess. Hope that helps Matthew
Aug 18 2004
As Matthew suggested, -ldl should fix the problem. I was looking for a similar answer on this group a month or so ago. The linker just needs to see the dynamic linking library libdl.so. Since the linux build file doesn't include the loader.d in the phobos make process, neither does it worry about adding the -ldl option. So if you've rebuilt phobos manually, you've got to remember to add the extra link option yourself.What can I do to get std.loader working on linux? Any suggestions would be welcome :)"-dl" would be my first, best (and only) guess. Hope that helps Matthew
Aug 19 2004
It seems that your problem on Linux is that you should also link libdl.a, i.e specify "-ldl" in your command.oops. that was it. thanks, seems to work now.I don't know what SDL is, I'm afraid.a shared library that allows me to access the screen, input, sound, etc. on both windows and linux"-dl" would be my first, best (and only) guess.yup. that works thanks.
Aug 19 2004