datetime fails with undefined reference

Lars T. Kyllingstad public at kyllingen.NOSPAMnet
Fri Feb 18 10:01:36 PST 2011


On Fri, 18 Feb 2011 16:38:19 +0000, Kai Meyer wrote:

> I can't seem to use std.datetime at all. I get undefined reference on
> whether I use a StopWatch, or if I just try to compile the unittest. All
> I have to do is declare a StopWatch:
> 
> import std.stdio;
> import std.datetime;
> 
> void main()
> {
>     StopWatch sw;
> }
> 
> 
> This fails to compile:
> [kai at worky ~]$ dmd datetime_test.d
> /usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../../../lib/libphobos2.a
(datetime_35c_30e.o):
> In function `_D3std8datetime7systimeFNeZS3std8datetime5Ticks':
> std/datetime.d:(.text._D3std8datetime7systimeFNeZS3std8datetime5Ticks
+0x1c):
> undefined reference to `clock_gettime'
> /usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../../../lib/libphobos2.a
(datetime_359_1fe.o):
> In function `_D3std8datetime5Ticks12_staticCtor5OFNeZv':
> std/datetime.d:(.text._D3std8datetime5Ticks12_staticCtor5OFNeZv+0x1b):
> undefined reference to `clock_getres' collect2: ld returned 1 exit
> status
> --- errorlevel 1
> 
> Am I missing some libraries somewhere?
> 
> If I 'import core.sys.posix.time, core.sys.posix.sys.time;', parts of
> dattime work, and others don't. A main with just:
>     writef("%s %s\n", (is(typeof({auto fp = &clock_gettime; }))));
> 
> Prints "true true", but using them like this gives undefined again:
>     timespec ts; writef("%d\n", clock_getres(CLOCK_REALTIME, &ts));
> 
> 
> datetime_test.o: In function `_Dmain':
> datetime_test.d:(.text._Dmain+0x34): undefined reference to
> `clock_getres' collect2: ld returned 1 exit status
> --- errorlevel 1
> 
> 
> I'm running Fedora 14 x86_64, dmd-2.051-0.i386, glibc-2.13-1.i686.
> 
> Any ideas?

You have to link in librt.  Pass the -L-lrt option to DMD and it should 
work.

-Lars


More information about the Digitalmars-d-learn mailing list