View previous topic :: View next topic |
Author |
Message |
randomZ
Joined: 04 Dec 2004 Posts: 31 Location: Tuebingen, Germany
|
Posted: Sun Dec 26, 2004 4:02 pm Post subject: Building on Linux |
|
|
I have trouble building derelict libraries on Linux, or rather using them.
What I do:
dmd loader.d, put loader.o in derelict's obj dir
make -fMakefile.linux, e.g. in DerelictSDL
Then I write a simple program that uses SDL, but I get tons of linker errors (undefined reference) from loader.o. Do I need to link anything in besides derelictSDL, phobos and loader.o?
Code: |
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader13ExeModuleInfo5_ctorFT3std6loader8HModule_AaZC3std6loader13ExeModuleInfo+0x2a): In function `_D3std6loader13ExeModuleInfo5_ctorFT3std6loader8HModule_AaZC3std6loader13ExeModuleInfo':
: undefined reference to `_D9invariant12_d_invariantFC6ObjectZv'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader13record_error_FZv+0x8): In function `_D3std6loader13record_error_FZv':
: undefined reference to `dlerror'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader15ExeModule_Load_FAaZT3std6loader8HXModule+0x21): In function `_D3std6loader15ExeModule_Load_FAaZT3std6loader8HXModule':
: undefined reference to `_init_11TypeInfo_Aa'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader15ExeModule_Load_FAaZT3std6loader8HXModule+0x2d): In function `_D3std6loader15ExeModule_Load_FAaZT3std6loader8HXModule':
: undefined reference to `_aaGet'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader15ExeModule_Load_FAaZT3std6loader8HXModule+0x5a): In function `_D3std6loader15ExeModule_Load_FAaZT3std6loader8HXModule':
: undefined reference to `dlopen'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader15ExeModule_Load_FAaZT3std6loader8HXModule+0x9e): In function `_D3std6loader15ExeModule_Load_FAaZT3std6loader8HXModule':
: undefined reference to `_init_11TypeInfo_Aa'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader15ExeModule_Load_FAaZT3std6loader8HXModule+0xaa): In function `_D3std6loader15ExeModule_Load_FAaZT3std6loader8HXModule':
: undefined reference to `_aaGet'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader17ExeModule_AddRef_FT3std6loader8HXModuleZT3std6loader8HXModule+0x63): In function `_D3std6loader17ExeModule_AddRef_FT3std6loader8HXModuleZT3std6loader8HXModule':
: undefined reference to `_init_11TypeInfo_Aa'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader17ExeModule_AddRef_FT3std6loader8HXModuleZT3std6loader8HXModule+0x72): In function `_D3std6loader17ExeModule_AddRef_FT3std6loader8HXModuleZT3std6loader8HXModule':
: undefined reference to `_aaGet'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader17ExeModule_AddRef_FT3std6loader8HXModuleZT3std6loader8HXModule+0x93): In function `_D3std6loader17ExeModule_AddRef_FT3std6loader8HXModuleZT3std6loader8HXModule':
: undefined reference to `_init_11TypeInfo_Aa'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader17ExeModule_AddRef_FT3std6loader8HXModuleZT3std6loader8HXModule+0x9a): In function `_D3std6loader17ExeModule_AddRef_FT3std6loader8HXModuleZT3std6loader8HXModule':
: undefined reference to `_aaGet'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader18ExeModule_Release_FKT3std6loader8HXModuleZv+0x61): In function `_D3std6loader18ExeModule_Release_FKT3std6loader8HXModuleZv':
: undefined reference to `_init_11TypeInfo_Aa'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader18ExeModule_Release_FKT3std6loader8HXModuleZv+0x70): In function `_D3std6loader18ExeModule_Release_FKT3std6loader8HXModuleZv':
: undefined reference to `_aaGet'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader18ExeModule_Release_FKT3std6loader8HXModuleZv+0x91): In function `_D3std6loader18ExeModule_Release_FKT3std6loader8HXModuleZv':
: undefined reference to `_init_11TypeInfo_Aa'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader18ExeModule_Release_FKT3std6loader8HXModuleZv+0x98): In function `_D3std6loader18ExeModule_Release_FKT3std6loader8HXModuleZv':
: undefined reference to `_aaGet'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader18ExeModule_Release_FKT3std6loader8HXModuleZv+0xcf): In function `_D3std6loader18ExeModule_Release_FKT3std6loader8HXModuleZv':
: undefined reference to `dlclose'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader18ExeModule_Release_FKT3std6loader8HXModuleZv+0xe6): In function `_D3std6loader18ExeModule_Release_FKT3std6loader8HXModuleZv':
: undefined reference to `_init_11TypeInfo_Aa'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader18ExeModule_Release_FKT3std6loader8HXModuleZv+0xf8): In function `_D3std6loader18ExeModule_Release_FKT3std6loader8HXModuleZv':
: undefined reference to `_aaDel'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader20ExeModule_GetSymbol_FKT3std6loader8HXModuleAaZPv+0x61): In function `_D3std6loader20ExeModule_GetSymbol_FKT3std6loader8HXModuleAaZPv':
: undefined reference to `_init_11TypeInfo_Aa'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader20ExeModule_GetSymbol_FKT3std6loader8HXModuleAaZPv+0x70): In function `_D3std6loader20ExeModule_GetSymbol_FKT3std6loader8HXModuleAaZPv':
: undefined reference to `_aaGet'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader20ExeModule_GetSymbol_FKT3std6loader8HXModuleAaZPv+0x91): In function `_D3std6loader20ExeModule_GetSymbol_FKT3std6loader8HXModuleAaZPv':
: undefined reference to `_init_11TypeInfo_Aa'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader20ExeModule_GetSymbol_FKT3std6loader8HXModuleAaZPv+0x98): In function `_D3std6loader20ExeModule_GetSymbol_FKT3std6loader8HXModuleAaZPv':
: undefined reference to `_aaGet'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader20ExeModule_GetSymbol_FKT3std6loader8HXModuleAaZPv+0xc4): In function `_D3std6loader20ExeModule_GetSymbol_FKT3std6loader8HXModuleAaZPv':
: undefined reference to `dlsym'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader18ExeModule_GetPath_FT3std6loader8HXModuleZAa+0x63): In function `_D3std6loader18ExeModule_GetPath_FT3std6loader8HXModuleZAa':
: undefined reference to `_init_11TypeInfo_Aa'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader18ExeModule_GetPath_FT3std6loader8HXModuleZAa+0x72): In function `_D3std6loader18ExeModule_GetPath_FT3std6loader8HXModuleZAa':
: undefined reference to `_aaGet'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader18ExeModule_GetPath_FT3std6loader8HXModuleZAa+0x93): In function `_D3std6loader18ExeModule_GetPath_FT3std6loader8HXModuleZAa':
: undefined reference to `_init_11TypeInfo_Aa'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader18ExeModule_GetPath_FT3std6loader8HXModuleZAa+0x9a): In function `_D3std6loader18ExeModule_GetPath_FT3std6loader8HXModuleZAa':
: undefined reference to `_aaGet'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader18ExeModuleException5_ctorFAaZC3std6loader18ExeModuleException+0x1e): In function `_D3std6loader18ExeModuleException5_ctorFAaZC3std6loader18ExeModuleException':
: undefined reference to `_D9invariant12_d_invariantFC6ObjectZv'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader18ExeModuleException5_ctorFkZC3std6loader18ExeModuleException+0xd): In function `_D3std6loader18ExeModuleException5_ctorFkZC3std6loader18ExeModuleException':
: undefined reference to `_D3std8syserror8SysError3msgFkZAa'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader18ExeModuleException5_ctorFkZC3std6loader18ExeModuleException+0x25): In function `_D3std6loader18ExeModuleException5_ctorFkZC3std6loader18ExeModuleException':
: undefined reference to `_D9invariant12_d_invariantFC6ObjectZv'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader9ExeModule5_ctorFT3std6loader8HXModuleiZC3std6loader9ExeModule+0x41): In function `_D3std6loader9ExeModule5_ctorFT3std6loader8HXModuleiZC3std6loader9ExeModule':
: undefined reference to `_D9invariant12_d_invariantFC6ObjectZv'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader9ExeModule5_ctorFAaZC3std6loader9ExeModule+0x56): In function `_D3std6loader9ExeModule5_ctorFAaZC3std6loader9ExeModule':
: undefined reference to `_D9invariant12_d_invariantFC6ObjectZv'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader9ExeModule5_dtorFZv+0xa): In function `_D3std6loader9ExeModule5_dtorFZv':
: undefined reference to `_D9invariant12_d_invariantFC6ObjectZv'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader9ExeModule5closeFZv+0xa): In function `_D3std6loader9ExeModule5closeFZv':
: undefined reference to `_D9invariant12_d_invariantFC6ObjectZv'
/usr/local/lib/libderelictSDL.a(loader.o)(.gnu.linkonce.t_D3std6loader9ExeModule9getSymbolFAaZPv+0xa): more undefined references to `_D9invariant12_d_invariantFC6ObjectZv' follow
collect2: ld returned 1 exit status
|
-Sebastian |
|
Back to top |
|
|
aldacron
Joined: 05 May 2004 Posts: 1322 Location: Seoul, South Korea
|
Posted: Sun Dec 26, 2004 8:03 pm Post subject: |
|
|
The errors you are getting aren't very clear, but there are a couple of things that I can think of that may help.
You should also be linking to libdl, which is a standard linux library and is required by loader.o. This is, I suspect, the reason why loader.d is not compiled into phobos on Linux in the first place. Although the errors don't point to that, it is a requirement.
Also, it is likely a good idea to remove loader.o from the object list in Makefile.linux. It really shouldn't be there. If you are linking loader.o on the command line when you build your app that could cause conflicts I suspect - which may be what is happening here?. I'll update svn with a corrected version as soon as I can get around to it. |
|
Back to top |
|
|
clayasaurus
Joined: 21 May 2004 Posts: 857
|
Posted: Tue Dec 28, 2004 2:10 pm Post subject: |
|
|
don't forget the linker options -ldl and i think -lm as well, maybe -lpthread. i'm not quite sure because i havn't done it for a bit. dl is the dynamic library library loader.d uses.
happy new year. |
|
Back to top |
|
|
randomZ
Joined: 04 Dec 2004 Posts: 31 Location: Tuebingen, Germany
|
Posted: Mon Jan 03, 2005 1:01 pm Post subject: |
|
|
OK, I finally got around to getting this to work. I did the following:
- Remove loader.o from DerelictSDL's Makefile.linux
- Copy loader.d to my app's dir and add it to its sources list
- Link my app with dl (m and pthread weren't necessary) |
|
Back to top |
|
|
aldacron
Joined: 05 May 2004 Posts: 1322 Location: Seoul, South Korea
|
Posted: Mon Jan 03, 2005 8:56 pm Post subject: |
|
|
Doh! I haven't fixed the Makefile in svn yet. I'll get on that right now.
[EDIT] Done! |
|
Back to top |
|
|
|