www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - tango and gdc

reply Jason House <jason.james.house gmail.com> writes:
Under linux, I have gotten past compilation issues with -fversion=Posix, 
but I fail to link.  Any ideas on what could be going wrong?

$ gdc -fversion=Posix -w -g *.d -o housebot-0.6.gdc -I /import/ -ltango
/home/jhouse/tmp/cceVjUiy.o: In function `_Dmain':
/home/jhouse/Documents/go/housebot-0.6/housebot.d:259: undefined 
reference to `_D3std2gc7disableFZv'
/bin/../lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libtango.a(tango.uti
.time.StopWatch.o): 
In function `_D5tango4util4time9StopWatch9StopWatch4stopMFZf':
tango/util/time/StopWatch.d:(.gnu.linkonce.t_D5tango4util4time9StopWatch9StopW
tch4stopMFZf+0x17): 
undefined reference to `__U64_LDBL'
/bin/../lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libtango.a(tango.uti
.time.StopWatch.o): 
In function `_D5tango4util4time9StopWatch9StopWatch5timerFZm':
tango/util/time/StopWatch.d:(.gnu.linkonce.t_D5tango4util4time9StopWatch9StopW
tch5timerFZm+0x4f): 
undefined reference to `_d_throw 4'
/bin/../lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libtango.a(tango.math.Math.o): 
In function `_D5tango4math4Math4asinFcZc':
tango/math/Math.d:(.gnu.linkonce.t_D5tango4math4Math4asinFcZc+0x26): 
undefined reference to `_Cmul'
etc...
Aug 15 2007
parent reply Carlos Santander <csantander619 gmail.com> writes:
Jason House escribió:
 Under linux, I have gotten past compilation issues with -fversion=Posix, 
 but I fail to link.  Any ideas on what could be going wrong?
 
 $ gdc -fversion=Posix -w -g *.d -o housebot-0.6.gdc -I /import/ -ltango
 /home/jhouse/tmp/cceVjUiy.o: In function `_Dmain':
 /home/jhouse/Documents/go/housebot-0.6/housebot.d:259: undefined 
 reference to `_D3std2gc7disableFZv'
 /bin/../lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libtango.a(tango.uti
.time.StopWatch.o): 
 In function `_D5tango4util4time9StopWatch9StopWatch4stopMFZf':
 tango/util/time/StopWatch.d:(.gnu.linkonce.t_D5tango4util4time9StopWatch9StopW
tch4stopMFZf+0x17): 
 undefined reference to `__U64_LDBL'
 /bin/../lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libtango.a(tango.uti
.time.StopWatch.o): 
 In function `_D5tango4util4time9StopWatch9StopWatch5timerFZm':
 tango/util/time/StopWatch.d:(.gnu.linkonce.t_D5tango4util4time9StopWatch9StopW
tch5timerFZm+0x4f): 
 undefined reference to `_d_throw 4'
 /bin/../lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libtango.a
tango.math.Math.o): 
 In function `_D5tango4math4Math4asinFcZc':
 tango/math/Math.d:(.gnu.linkonce.t_D5tango4math4Math4asinFcZc+0x26): 
 undefined reference to `_Cmul'
 etc...
I've had more luck getting Tango programs to compile with either Bud (as in the examples) or Rebuild. -- Carlos Santander Bernal
Aug 15 2007
next sibling parent Jason House <jason.james.house gmail.com> writes:
Carlos Santander Wrote:
 I've had more luck getting Tango programs to compile with either Bud (as in
the 
 examples) or Rebuild.
My colleague on a mac gets the following with dsss (AKA rebuild). Is this a generic issue or a mac issue? $ dsss build housebot.d => housebot-0.6 + /Users/u/Programmieren/D/bin/rebuild -Idsss_imports/ -I. -S./ -I/ Users/u/Programmieren/D/include/d -S/Users/u/Programmieren/D/lib/ - oqdsss_objs -Dddoc/ddoc -unittest -w -g housebot.d -ofhousebot-0.6 warning - /Users/u/Programmieren/D/tango/tango/math/IEEE.d:566: Error: implicit conversion of expression (cast(int)((cast(short*)(& x))[4u]) & 32767) of type int to short can cause loss of data Command /Users/u/Programmieren/D/bin/rebuild returned with code 256, aborting.
Aug 16 2007
prev sibling parent reply Lars Noschinski <lars-2006-1 usenet.noschinski.de> writes:
* Carlos Santander <csantander619 gmail.com> [07-08-16 07:00]:
Jason House escribió:
Under linux, I have gotten past compilation issues with -fversion=Posix, but I 
fail to link.  Any ideas on what could be going wrong?
$ gdc -fversion=Posix -w -g *.d -o housebot-0.6.gdc -I /import/ -ltango
/home/jhouse/tmp/cceVjUiy.o: In function `_Dmain':
/home/jhouse/Documents/go/housebot-0.6/housebot.d:259: undefined reference to 
`_D3std2gc7disableFZv'
/bin/../lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libtango.a(tango.uti
.time.StopWatch.o): 
In function `_D5tango4util4time9StopWatch9StopWatch4stopMFZf':
tango/util/time/StopWatch.d:(.gnu.linkonce.t_D5tango4util4time9StopWatch9StopW
tch4stopMFZf+0x17): 
undefined reference to `__U64_LDBL'
/bin/../lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libtango.a(tango.uti
.time.StopWatch.o): 
In function `_D5tango4util4time9StopWatch9StopWatch5timerFZm':
tango/util/time/StopWatch.d:(.gnu.linkonce.t_D5tango4util4time9StopWatch9StopW
tch5timerFZm+0x4f): 
undefined reference to `_d_throw 4'
/bin/../lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libtango.a(tango.math.Math.o): 
In function `_D5tango4math4Math4asinFcZc':
tango/math/Math.d:(.gnu.linkonce.t_D5tango4math4Math4asinFcZc+0x26): undefined 
reference to `_Cmul'
etc...
I've had more luck getting Tango programs to compile with either Bud (as in the examples) or Rebuild.
Bud does not build with Tango, so I tried rebuild. It works, but builds a lot of object files, probably one for each Tango class used. This is somehow annoying and I wonder, if there should not a precompiled binary? I installed Tango/GDC via the tango+gdc installer from the tango website in /usr/local.
Aug 17 2007
next sibling parent reply Carlos Santander <csantander619 gmail.com> writes:
Lars Noschinski escribió:
 * Carlos Santander <csantander619 gmail.com> [07-08-16 07:00]:
 I've had more luck getting Tango programs to compile with either Bud 
 (as in the examples) or Rebuild.
Bud does not build with Tango, so I tried rebuild. It works, but builds a lot of object files, probably one for each Tango class used. This is somehow annoying and I wonder, if there should not a precompiled binary? I installed Tango/GDC via the tango+gdc installer from the tango website in /usr/local.
Regarding Bud, first you would have to build it using GPhobos, and then switch to Tango. Both Bud and Rebuild will create all those object files; that's how they work. You could put the files in a global directory and use that directory as your library. Something like, /home/lars/tango/obj, and configure all your projects to use that path as obj output. I'm not doing that because I just thought of that idea, but I think it could work. Someone once gave me this sh script to build a Tango library. I don't use it, but you could find it useful. rm obj/*.o libltango.a -v export count=0; find tango -name "*.d" |while read a; do count=`expr $count + 1`; gdc -ltango -c -o obj/$count.o -O2 -finline-functions -frelease -fversion=Posix $a 2>/dev/null && echo -n "$count-$a ° "; done ar q libltango.a obj/*.o I guess you wouldn't need Bud or Rebuild if you use the resulting library. -- Carlos Santander Bernal
Aug 17 2007
parent Lars Ivar Igesund <larsivar igesund.net> writes:
Carlos Santander wrote:

 Lars Noschinski escribió:
 * Carlos Santander <csantander619 gmail.com> [07-08-16 07:00]:
 I've had more luck getting Tango programs to compile with either Bud
 (as in the examples) or Rebuild.
Bud does not build with Tango, so I tried rebuild. It works, but builds a lot of object files, probably one for each Tango class used. This is somehow annoying and I wonder, if there should not a precompiled binary? I installed Tango/GDC via the tango+gdc installer from the tango website in /usr/local.
Regarding Bud, first you would have to build it using GPhobos, and then switch to Tango. Both Bud and Rebuild will create all those object files; that's how they work. You could put the files in a global directory and use that directory as your library. Something like, /home/lars/tango/obj, and configure all your projects to use that path as obj output. I'm not doing that because I just thought of that idea, but I think it could work. Someone once gave me this sh script to build a Tango library. I don't use it, but you could find it useful.
You will now find build-tango.sh in lib/ that should work for you :) -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Aug 17 2007
prev sibling parent Lars Noschinski <lars-2006-1 usenet.noschinski.de> writes:
* Lars Noschinski <lars-2006-1 usenet.noschinski.de> [07-08-17 19:28]:
Bud does not build with Tango, so I tried rebuild. It works, but builds
a lot of object files, probably one for each Tango class used. This is
somehow annoying and I wonder, if there should not a precompiled binary?

I installed Tango/GDC via the tango+gdc installer from the tango
website in /usr/local.
Hm, the order of arguments to matters: % gdc -I /usr/local/include -fversion=Posix dzen-status.d -lgtango works, but % gdc -I /usr/local/include -fversion=Posix -lgtango dzen-status.d fails with undefined references: /tmp/ccWAFn0z.o: In function `_Dmain': dzen-status.d:(.text+0x54): undefined reference to `_D5tango3sys7Process7Process7__ClassZ' dzen-status.d:(.text+0x6f): undefined reference to `_D5tango3sys7Process7Process5_ctorMFAAaXC5tango3sys7Process7Process' dzen-status.d:(.text+0xdd): undefined reference to `_D5tango2io6Stdout6StdoutC5tango2io5Print12__T5PrintTaZ5Print' dzen-status.d:(.text+0x103): undefined reference to `_D5tango2io5Print12__T5PrintTaZ5Print8formatlnMFAaYC5tango2io5Print12__T5PrintTaZ5Print' /tmp/ccWAFn0z.o:(.data+0x34): undefined reference to `_D5tango2io6Stdout12__ModuleInfoZ' /tmp/ccWAFn0z.o:(.data+0x38): undefined reference to `_D5tango3sys7Process12__ModuleInfoZ' collect2: ld returned 1 exit status This is actually documented in the gcc documentation, but did not occur to me yesterday, so I failed to link against libgtango: It makes a difference where in the command you write this option; the linker searches and processes libraries and object files in the order they are specified. Thus, `foo.o -lz bar.o' searches library `z' after file `foo.o' but before `bar.o'. If `bar.o' refers to functions in `z', those functions may not be loaded.
Aug 17 2007