Linker Error Building DMD

dsimcha dsimcha at yahoo.com
Thu Aug 4 08:31:31 PDT 2011


I have to get DMD 2.054 running on an ancient Linux distro, which means
compiling it myself to get around various GLIBC issues.  Everything compiles
fine, but when the makefile tries to link, I get the following linker error
message.  I don't even know where to start trying to troubleshoot this.
Strangely, though, it happens even when I try to build 2.054 on newer distros
and similarly nasty linker errors when I try to compile in 32-bit mode.

gcc -m64 -lstdc++ -lpthread  access.o array.o attrib.o bcomplex.o bit.o
blockopt.o cast.o code.o cg.o cg87.o cgcod.o cgcs.o cgelem.o cgen.o cgreg.o
cgsched.o class.o cod1.o cod2.o cod3.o cod4.o cod5.o constfold.o irstate.o
dchar.o cond.o debug.o declaration.o dsymbol.o dt.o dump.o e2ir.o ee.o eh.o
el.o dwarf.o enum.o evalu8.o expression.o func.o gdag.o gflow.o glocal.o
gloop.o glue.o gnuc.o go.o gother.o html.o iasm.o id.o identifier.o
impcnvtab.o import.o inifile.o init.o inline.o lexer.o link.o lstring.o
mangle.o mars.o rmem.o module.o msc.o mtype.o nteh.o cppmangle.o opover.o
optimize.o os.o out.o outbuf.o parse.o ph.o ptrntab.o root.o rtlsym.o s2ir.o
scope.o statement.o stringtable.o struct.o csymbol.o template.o tk.o tocsym.o
todt.o type.o typinf.o util.o var.o version.o strtold.o utf.o staticassert.o
unialpha.o toobj.o toctype.o toelfdebug.o entity.o doc.o macro.o hdrgen.o
delegatize.o aa.o ti_achar.o toir.o interpret.o traits.o builtin.o clone.o
aliasthis.o man.o arrayop.o port.o response.o async.o json.o speller.o aav.o
unittests.o imphint.o argtypes.o ti_pvoid.o libelf.o elfobj.o -o dmd
cast.o: In function `CastExp::getIntRange()':
cast.c:(.text+0x541): undefined reference to `IntRange::cast(Type*)'
cast.o: In function `IntegerExp::getIntRange()':
cast.c:(.text+0x59a): undefined reference to `IntRange::cast(Type*)'
cast.o: In function `MulExp::getIntRange()':
cast.c:(.text+0x61b): undefined reference to
`SignExtendedNumber::operator*(SignExtendedNumber const&) const'
cast.c:(.text+0x633): undefined reference to
`SignExtendedNumber::operator*(SignExtendedNumber const&) const'
cast.c:(.text+0x650): undefined reference to
`SignExtendedNumber::operator*(SignExtendedNumber const&) const'
cast.c:(.text+0x665): undefined reference to
`SignExtendedNumber::operator*(SignExtendedNumber const&) const'
cast.c:(.text+0x67e): undefined reference to
`IntRange::fromNumbers4(SignExtendedNumber const*)'
cast.c:(.text+0x689): undefined reference to `IntRange::cast(Type*)'
cast.o: In function `AddExp::getIntRange()':
cast.c:(.text+0x729): undefined reference to
`SignExtendedNumber::operator+(SignExtendedNumber const&) const'
cast.c:(.text+0x74b): undefined reference to
`SignExtendedNumber::operator+(SignExtendedNumber const&) const'
cast.c:(.text+0x791): undefined reference to `IntRange::cast(Type*)'
cast.o: In function `Expression::getIntRange()':
cast.c:(.text+0x7d9): undefined reference to `IntRange::fromType(Type*)'
cast.o: In function `ModExp::getIntRange()':
cast.c:(.text+0x851): undefined reference to `IntRange::absNeg() const'
cast.c:(.text+0x8a6): undefined reference to `SignExtendedNumber::operator++()'
cast.c:(.text+0x8ae): undefined reference to `SignExtendedNumber::operator-()
const'
cast.c:(.text+0x900): undefined reference to `IntRange::cast(Type*)'
cast.c:(.text+0x927): undefined reference to
`SignExtendedNumber::operator<(SignExtendedNumber const&) const'
cast.c:(.text+0x954): undefined reference to
`SignExtendedNumber::operator<(SignExtendedNumber const&) const'
cast.o: In function `DivExp::getIntRange()':
cast.c:(.text+0x9c4): undefined reference to `IntRange::containsZero() const'
cast.c:(.text+0xa1b): undefined reference to
`SignExtendedNumber::operator/(SignExtendedNumber const&) const'
cast.c:(.text+0xa33): undefined reference to
`SignExtendedNumber::operator/(SignExtendedNumber const&) const'
cast.c:(.text+0xa48): undefined reference to
`SignExtendedNumber::operator/(SignExtendedNumber const&) const'
cast.c:(.text+0xa65): undefined reference to
`SignExtendedNumber::operator/(SignExtendedNumber const&) const'
cast.c:(.text+0xa7e): undefined reference to
`IntRange::fromNumbers4(SignExtendedNumber const*)'
cast.c:(.text+0xa89): undefined reference to `IntRange::cast(Type*)'
cast.o: In function `Expression::implicitConvTo(Type*)':
cast.c:(.text+0x3909): undefined reference to `IntRange::fromType(Type*, bool)'
cast.c:(.text+0x3916): undefined reference to `IntRange::fromType(Type*, bool)'
cast.c:(.text+0x3921): undefined reference to `IntRange::contains(IntRange
const&) const'
cast.c:(.text+0x3934): undefined reference to `IntRange::contains(IntRange
const&) const'
cast.o: In function `XorExp::getIntRange()':
cast.c:(.text+0x44bb): undefined reference to
`IntRange::splitBySign(IntRange&, bool&, IntRange&, bool&) const'
cast.c:(.text+0x44d9): undefined reference to
`IntRange::splitBySign(IntRange&, bool&, IntRange&, bool&) const'
cast.c:(.text+0x454e): undefined reference to `IntRange::cast(Type*)'
cast.c:(.text+0x45c8): undefined reference to
`IntRange::unionOrAssign(IntRange const&, bool&)'
cast.c:(.text+0x460c): undefined reference to
`IntRange::unionOrAssign(IntRange const&, bool&)'
cast.c:(.text+0x464a): undefined reference to
`IntRange::unionOrAssign(IntRange const&, bool&)'
cast.c:(.text+0x467f): undefined reference to
`IntRange::unionOrAssign(IntRange const&, bool&)'
cast.o: In function `OrExp::getIntRange()':
cast.c:(.text+0x473b): undefined reference to
`IntRange::splitBySign(IntRange&, bool&, IntRange&, bool&) const'
cast.c:(.text+0x4759): undefined reference to
`IntRange::splitBySign(IntRange&, bool&, IntRange&, bool&) const'
cast.c:(.text+0x47ce): undefined reference to `IntRange::cast(Type*)'
cast.c:(.text+0x4848): undefined reference to
`IntRange::unionOrAssign(IntRange const&, bool&)'
cast.c:(.text+0x488c): undefined reference to
`IntRange::unionOrAssign(IntRange const&, bool&)'
cast.c:(.text+0x48ca): undefined reference to
`IntRange::unionOrAssign(IntRange const&, bool&)'
cast.c:(.text+0x48ff): undefined reference to
`IntRange::unionOrAssign(IntRange const&, bool&)'
cast.o: In function `AndExp::getIntRange()':
cast.c:(.text+0x49bb): undefined reference to
`IntRange::splitBySign(IntRange&, bool&, IntRange&, bool&) const'
cast.c:(.text+0x49d9): undefined reference to
`IntRange::splitBySign(IntRange&, bool&, IntRange&, bool&) const'
cast.c:(.text+0x4a4e): undefined reference to `IntRange::cast(Type*)'
cast.c:(.text+0x4ac8): undefined reference to
`IntRange::unionOrAssign(IntRange const&, bool&)'
cast.c:(.text+0x4b0c): undefined reference to
`IntRange::unionOrAssign(IntRange const&, bool&)'
cast.c:(.text+0x4b4a): undefined reference to
`IntRange::unionOrAssign(IntRange const&, bool&)'
cast.c:(.text+0x4b7f): undefined reference to
`IntRange::unionOrAssign(IntRange const&, bool&)'
cast.o: In function `NegExp::getIntRange()':
cast.c:(.text+0x4bdb): undefined reference to `SignExtendedNumber::operator-()
const'
cast.c:(.text+0x4bfb): undefined reference to `SignExtendedNumber::operator-()
const'
cast.c:(.text+0x4c3b): undefined reference to `IntRange::cast(Type*)'
cast.o: In function `MinExp::getIntRange()':
cast.c:(.text+0x4cb8): undefined reference to
`SignExtendedNumber::operator-(SignExtendedNumber const&) const'
cast.c:(.text+0x4cdb): undefined reference to
`SignExtendedNumber::operator-(SignExtendedNumber const&) const'
cast.c:(.text+0x4d21): undefined reference to `IntRange::cast(Type*)'
cast.o: In function `UshrExp::getIntRange()':
cast.c:(.text+0x4dab): undefined reference to `IntRange::castUnsigned(Type*)'
cast.c:(.text+0x4e16): undefined reference to
`SignExtendedNumber::operator>>(SignExtendedNumber const&) const'
cast.c:(.text+0x4e3f): undefined reference to
`SignExtendedNumber::operator>>(SignExtendedNumber const&) const'
cast.c:(.text+0x4e91): undefined reference to `IntRange::cast(Type*)'
cast.o: In function `ShrExp::getIntRange()':
cast.c:(.text+0x4f68): undefined reference to
`SignExtendedNumber::operator>>(SignExtendedNumber const&) const'
cast.c:(.text+0x4f9a): undefined reference to
`SignExtendedNumber::operator>>(SignExtendedNumber const&) const'
cast.c:(.text+0x4fe2): undefined reference to `IntRange::cast(Type*)'
cast.o: In function `ShlExp::getIntRange()':
cast.c:(.text+0x50b8): undefined reference to
`SignExtendedNumber::operator<<(SignExtendedNumber const&) const'
cast.c:(.text+0x50ea): undefined reference to
`SignExtendedNumber::operator<<(SignExtendedNumber const&) const'
cast.c:(.text+0x5132): undefined reference to `IntRange::cast(Type*)'
cast.o: In function `ComExp::getIntRange()':
cast.c:(.text+0x51db): undefined reference to `IntRange::cast(Type*)'
collect2: ld returned 1 exit status


More information about the Digitalmars-d mailing list