I was trying to build ldc from trunk (with Tango 0.99.8), and with
just a tiny bit of massaging I was able to get everything to build.
However, when I compile a simple D program, I end up with a boatload
of link errors. This is on Fedora 11, x86-64.
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(lifetime.o):
In function `_D8lifetime13length_adjustFmmZm':
/home/mike/Development/ldc/runtime/internal/lifetime.d:100: undefined
reference to `onOutOfMemoryError'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(lifetime.o):
In function `_d_allocclass':
/home/mike/Development/ldc/runtime/internal/lifetime.d:129: undefined
reference to `gc_malloc'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(lifetime.o):
In function `_d_delclass':
/home/mike/Development/ldc/runtime/internal/lifetime.d:203: undefined
reference to `gc_free'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(lifetime.o):
In function `_d_newarrayT':
/home/mike/Development/ldc/runtime/internal/lifetime.d:237: undefined
reference to `gc_malloc'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(lifetime.o):
In function `_d_newarrayiT':
/home/mike/Development/ldc/runtime/internal/lifetime.d:259: undefined
reference to `gc_malloc'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(lifetime.o):
In function `_d_newarrayvT':
/home/mike/Development/ldc/runtime/internal/lifetime.d:304: undefined
reference to `gc_malloc'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(lifetime.o):
In function `_d_allocmemoryT':
/home/mike/Development/ldc/runtime/internal/lifetime.d:476: undefined
reference to `gc_malloc'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(lifetime.o):
In function `_d_delarray':
/home/mike/Development/ldc/runtime/internal/lifetime.d:491: undefined
reference to `gc_free'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(lifetime.o):
In function `_d_delmemory':
/home/mike/Development/ldc/runtime/internal/lifetime.d:504: undefined
reference to `gc_free'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(lifetime.o):
In function `rt_finalize':
/home/mike/Development/ldc/runtime/internal/lifetime.d:576: undefined
reference to `onFinalizeError'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(lifetime.o):
In function `_d_arraysetlengthT':
/home/mike/Development/ldc/runtime/internal/lifetime.d:620: undefined
reference to `gc_query'
/home/mike/Development/ldc/runtime/internal/lifetime.d:626: undefined
reference to `gc_extend'
/home/mike/Development/ldc/runtime/internal/lifetime.d:632: undefined
reference to `gc_malloc'
/home/mike/Development/ldc/runtime/internal/lifetime.d:641: undefined
reference to `gc_calloc'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(lifetime.o):
In function `_d_arraysetlengthiT':
/home/mike/Development/ldc/runtime/internal/lifetime.d:699: undefined
reference to `gc_query'
/home/mike/Development/ldc/runtime/internal/lifetime.d:705: undefined
reference to `gc_extend'
/home/mike/Development/ldc/runtime/internal/lifetime.d:711: undefined
reference to `gc_malloc'
/home/mike/Development/ldc/runtime/internal/lifetime.d:719: undefined
reference to `gc_malloc'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(lifetime.o):
In function `_adDupT':
/home/mike/Development/ldc/runtime/internal/lifetime.d:1064: undefined
reference to `gc_malloc'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(lifetime.o):
In function
`_D8lifetime13_d_newarraymTUC8TypeInfoiPmZPv3fooFC8TypeInfoPmiZAv':
/home/mike/Development/ldc/runtime/internal/lifetime.d:338: undefined
reference to `gc_malloc'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(lifetime.o):
In function
`_D8lifetime14_d_newarraymiTUC8TypeInfoiPmZPv3fooFC8TypeInfoPmiZAv':
/home/mike/Development/ldc/runtime/internal/lifetime.d:387: undefined
reference to `gc_malloc'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(lifetime.o):/
home/mike/Development/ldc/runtime/internal/lifetime.d:436: more
undefined references to `gc_malloc' follow
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(genobj.o):
In function `rt_attachDisposeEvent':
/home/mike/Development/ldc/runtime/internal/genobj.d:1439: undefined
reference to `onOutOfMemoryError'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(adi.o): In
function `_adReverse':
/home/mike/Development/ldc/runtime/internal/adi.d:284: undefined
reference to `gc_malloc'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(aaA.o): In
function `_aaGet':
/home/mike/Development/ldc/runtime/internal/aaA.d:275: undefined
reference to `gc_calloc'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(aaA.o): In
function `_aaDel':
/home/mike/Development/ldc/runtime/internal/aaA.d:392: undefined
reference to `gc_free'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(aaA.o): In
function `_aaValues':
/home/mike/Development/ldc/runtime/internal/aaA.d:443: undefined
reference to `gc_malloc'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(aaA.o): In
function `_aaKeys':
/home/mike/Development/ldc/runtime/internal/aaA.d:583: undefined
reference to `gc_malloc'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(dmain2.o):
In function `_d_assert':
/home/mike/Development/ldc/runtime/internal/dmain2.d:62: undefined
reference to `onAssertError'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(dmain2.o):
In function `_d_assert_msg':
/home/mike/Development/ldc/runtime/internal/dmain2.d:67: undefined
reference to `onAssertErrorMsg'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(dmain2.o):
In function `_d_array_bounds':
/home/mike/Development/ldc/runtime/internal/dmain2.d:72: undefined
reference to `onArrayBoundsError'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(dmain2.o):
In function `_d_switch_error':
/home/mike/Development/ldc/runtime/internal/dmain2.d:77: undefined
reference to `onSwitchError'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(dmain2.o):
In function `rt_init':
/home/mike/Development/ldc/runtime/internal/dmain2.d:106: undefined
reference to `gc_init'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(dmain2.o):
In function `rt_term':
/home/mike/Development/ldc/runtime/internal/dmain2.d:133: undefined
reference to `thread_joinAll'
/home/mike/Development/ldc/runtime/internal/dmain2.d:138: undefined
reference to `gc_term'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(dmain2.o):
In function `_D6dmain24mainUiPPaPPaZi6runAllMFZv':
/home/mike/Development/ldc/runtime/internal/dmain2.d:267: undefined
reference to `gc_init'
/home/mike/Development/ldc/runtime/internal/dmain2.d:269: undefined
reference to `runModuleUnitTests'
/home/mike/Development/ldc/runtime/internal/dmain2.d:271: undefined
reference to `thread_joinAll'
/home/mike/Development/ldc/runtime/internal/dmain2.d:274: undefined
reference to `gc_term'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(utf.o): In
function `_D4util3utf10toUCSindexFAamZm':
/home/mike/Development/ldc/runtime/internal/util/utf.d:119: undefined
reference to `onUnicodeError'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(utf.o): In
function `_D4util3utf10toUCSindexFAumZm':
/home/mike/Development/ldc/runtime/internal/util/utf.d:138: undefined
reference to `onUnicodeError'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(utf.o): In
function `_D4util3utf10toUTFindexFAamZm':
/home/mike/Development/ldc/runtime/internal/util/utf.d:160: undefined
reference to `onUnicodeError'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(utf.o): In
function `_D4util3utf6decodeFAaKmZw':
/home/mike/Development/ldc/runtime/internal/util/utf.d:268: undefined
reference to `onUnicodeError'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(utf.o): In
function `_D4util3utf6decodeFAuKmZw':
/home/mike/Development/ldc/runtime/internal/util/utf.d:378: undefined
reference to `onUnicodeError'
/home/mike/Development/ldc/bin/../lib/libtango-base-ldc.a(utf.o):/home/
mike/Development/ldc/runtime/internal/util/utf.d:400: more undefined
references to `onUnicodeError' follow
/home/mike/Development/ldc/bin/../lib/libtango-user-ldc.a
(tango.io.device.Device.o): In function
`_D5tango2io6device6Device6Device5errorMFZv':
tango.io.device.Device:(.text+0x141): undefined reference to
`getErrno'
/home/mike/Development/ldc/bin/../lib/libtango-user-ldc.a
(tango.io.device.Conduit.o): In function
`_D5tango2io6device7Conduit7Conduit5errorMFAaZv':
tango.io.device.Conduit:(.text+0x10c): undefined reference to
`_D5tango4core9Exception11IOException7__ClassZ'
tango.io.device.Conduit:(.text+0x11b): undefined reference to
`_D5tango4core9Exception11IOException6__vtblZ'
tango.io.device.Conduit:(.text+0x12a): undefined reference to
`_D5tango4core9Exception11IOException6__initZ'
tango.io.device.Conduit:(.text+0x135): undefined reference to
`_D5tango4core9Exception11IOException6__initZ'
tango.io.device.Conduit:(.text+0x140): undefined reference to
`_D5tango4core9Exception11IOException6__initZ'
tango.io.device.Conduit:(.text+0x14b): undefined reference to
`_D5tango4core9Exception11IOException6__initZ'
tango.io.device.Conduit:(.text+0x156): undefined reference to
`_D5tango4core9Exception11IOException6__initZ'
/home/mike/Development/ldc/bin/../lib/libtango-user-ldc.a
(tango.io.device.Conduit.o):tango.io.device.Conduit:(.text+0x161):
more undefined references to
`_D5tango4core9Exception11IOException6__initZ' follow
collect2: ld returned 1 exit status
Error: linking failed:
status: 1
When I compile with the binary release of ldc it works fine. I've got
what appears to be a properly-built libtango-user-ldc.a in the right
place, and I adjusted my ldc.conf file as much as I could to try to
get it to see everything:
default:
{
// 'switches' holds array of string that are appends to the
command line
// arguments before they are parsed.
switches = [
"-I/home/mike/Development/ldc/../tango",
"-I/home/mike/Development/ldc/../tango/lib/common",
"-L-L%%ldcbinarypath%%/../lib",
"-d-version=Tango",
"-defaultlib=tango-base-ldc",
"-debuglib=tango-base-ldc",
"-L-ltango-base-ldc",
"-L-ltango-user-ldc"
];
};
I'm invoking ldc with the following arguments:
-O5 -enable-inlining -release RenderSpud/Math/Vector.d RenderSpud/
Main.d -of=dRenderSpud
I followed the steps as closely as possible at
http://www.dsource.org/projects/ldc/wiki/BuildInstructions and
http://www.dsource.org/projects/ldc/wiki/BuildInstructionsTango0.99.8
so I'm not sure what I busted along the way.
Any hints?
-Mike