gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GNUmakefile and a strange case


From: Christopher Armstrong
Subject: Re: GNUmakefile and a strange case
Date: Wed, 20 Dec 2006 11:44:59 +1100

Hi

> gcc -o account.so -shared Account.os cli.os man.os User.os Group.os 
> LoggedUser.os -L/usr/lib/GNUstep/System/Library/Libraries -lobjc
> -lgnustep-base
> scons: done building targets.

Note with this you're linking against the gnustep-base library, which
includes the NSString class (the missing export in your error messages).
I guess you are making use of NSString somehow (either in the constant
(@"") or non-constant form).

> 
> Thanks.
> On Monday 18 December 2006 19:49, José Pablo Fernández wrote:
> > Hello,
> > I have a strange situation here, it used to be a C library compiled with
> > SCons, but now I am using ObjC and GNUstep and I was recommended to use
> > GNUmakefiles because of the added goodies.
> > Now, I need to create a library, the library should be called account.so
> > (note, not libaccount.so, account.so) and it should be installed
> > on /usr/lib/account/modules/ not on /whatever/Library/whatever. How can I
> > do this ?
> > Now, this library is dlopened, when I compile it with SCons it is loaded
> > succesfully, when I compile it with GNUmakefile (and copy the file by hand
> > renaming it in the process) I get this error:
> >
> > Error loading module 'account.so': /usr/lib/asterisk/modules/account.so:
> > undefined symbol: __objc_class_name_NSString
> >
> > Evidently there's something different in how it was linked with the gnustep
> > libraries.
> >
> > And as a last detail, I get this warnings, what do they mean:
> >
> > User.m:108: warning: ‘_OBJC_INSTANCE_0’ defined but not used
> > User.m:185: warning: ‘_OBJC_INSTANCE_1’ defined but not used
> > User.m:194: warning: ‘_OBJC_INSTANCE_2’ defined but not used
> >
These warnings come with gnustep-base when you use constant strings in
the form 

@"something here"

They seem to be harmless, and its a bug in gcc that should be fixed when
the gcc guys get round to it (ask them; check their bug reporting system
first).
> > ?
> >
> > Any help in any of these problems is appreciated.

You said you were compiling a "c library". This form of a GNUmakefile
with GNUstep does not link in gnustep-base. You will want to compile as
a normal library ($(GNUSTEP_MAKEFILES)/library.make). Please note that
what you are doing by putting the library in a different directory is
likely to cause problems. The gnustep-base library and the objective-c
runtime will somehow need to be in your library export path (ldconfig
and friends) for libaccount.so to load properly. 

For other customisations, I suggest taking a look a the gnustep-makefile
manual on GNUstep's web site; it has some options for customising your
output. 

Cheers

Chris
-- 
  Christopher Armstrong
  carmstrong ^^AT^ fastmail dOT com /Dot/ au





reply via email to

[Prev in Thread] Current Thread [Next in Thread]