FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Building on Linux

 
Post new topic   Reply to topic     Forum Index -> Derelict
View previous topic :: View next topic  
Author Message
randomZ



Joined: 04 Dec 2004
Posts: 31
Location: Tuebingen, Germany

PostPosted: Sun Dec 26, 2004 4:02 pm    Post subject: Building on Linux Reply with quote

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
View user's profile Send private message
aldacron



Joined: 05 May 2004
Posts: 1322
Location: Seoul, South Korea

PostPosted: Sun Dec 26, 2004 8:03 pm    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
clayasaurus



Joined: 21 May 2004
Posts: 857

PostPosted: Tue Dec 28, 2004 2:10 pm    Post subject: Reply with quote

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
View user's profile Send private message AIM Address
randomZ



Joined: 04 Dec 2004
Posts: 31
Location: Tuebingen, Germany

PostPosted: Mon Jan 03, 2005 1:01 pm    Post subject: Reply with quote

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
View user's profile Send private message
aldacron



Joined: 05 May 2004
Posts: 1322
Location: Seoul, South Korea

PostPosted: Mon Jan 03, 2005 8:56 pm    Post subject: Reply with quote

Doh! I haven't fixed the Makefile in svn yet. I'll get on that right now.

[EDIT] Done!
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic     Forum Index -> Derelict All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group