Bug #7969 Link failures for 'ndb_mgmd': Double defined + unresolved
Submitted: 17 Jan 2005 19:48 Modified: 18 Jan 2005 14:12
Reporter: Joerg Bruehe Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Compiling Severity:S3 (Non-critical)
Version:5.0.3-pre OS:Unix: various
Assigned to: Tomas Ulin CPU Architecture:Any

[17 Jan 2005 19:48] Joerg Bruehe
Description:
In the current build of 5.0.3, based on changeSet
  1.1771 05/01/13 15:10:12 lenz@mysql.com +1 -0
  - keep 5.0.3-alpha version string (after-merge fix)

'ndb_mgmd' fails to link on barney, butch-64bit, powermacg4, powermacg5, and sunfire100b-64bit.
This is due to an unresolved reference (and possibly several double definitions):

cxx -O3 -DDBUG_OFF -O4 -ansi_alias -fast -inline speed -noexceptions -nortti -DUNDEF_HAVE_GETHOSTBYNAME_R -DSNPRINTF_RETURN_TRUNC -I/usr/include/cxx -I/usr/include/cxx_cname -I/usr/include -I/usr/include.dtk -o ndb_mgmd MgmtSrvr.o MgmtSrvrGeneralSignalHandling.o main.o Services.o convertStrToInt.o SignalQueue.o MgmtSrvrConfig.o ConfigInfo.o InitConfigFileParser.o Config.o ../../../ndb/src/common/portlib/gcc.cpp ../../../ndb/src/mgmclient/CommandInterpreter.o  -pthread ../../../ndb/src/.libs/libndbclient.a -lpthread -lmach -lexc -lc -lpthread -lmach -lexc -lc -lpthread -lmach -lexc -lc -lpthread -lmach -lexc -lc -lpthread -lmach -lexc -lc -lpthread -lmach -lexc -lc -lpthread -lmach -lexc -lc -lpthread -lmach -lexc -lc -lpthread -lmach -lexc -lc -lpthread -lmach -lexc -lc -lpthread -lmach -lexc -lc -lpthread -lmach -lexc -lc -lpthread -lmach -lexc -lc -lpthread -lmach -lexc -lc -lpthread -lmach -lexc -lc -lpthread -lmach -lexc -lc -lpthread -lmach -lexc -lc -lpthread -lmach -lexc -lc -lpthread -lmach -lexc -lc -lpthread -lmach -lexc -lc ../../../dbug/libdbug.a ../../../mysys/libmysys.a ../../../strings/libmystrings.a ../../../cmd-line-utils/libedit/libedit.a -lcurses -lpthread -lmach -lexc -lc -lm -lpthread -lmach -lexc -lc
ld (prelink):
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o): Vector<unsigned short>::Vector(int): multiply defined
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o): Vector<unsigned short>::~Vector(void): multiply defined
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o): Vector<unsigned short>::operator [](unsigned int): multiply defined
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o): Vector<unsigned short>::operator [](unsigned int) const : multiply defined
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o): Vector<unsigned short>::push_back(const unsigned short&): multiply defined
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o): Vector<unsigned short>::back(void): multiply defined
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o): Vector<unsigned short>::erase(unsigned int): multiply defined
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o): Vector<unsigned short>::clear(void): multiply defined
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o): Vector<unsigned short>::fill(unsigned int, unsigned short&): multiply defined
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o): Vector<unsigned short>::operator =(const Vector<unsigned short>&): multiply defined
ld:
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o): Vector<unsigned short>::Vector(int): multiply defined
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o): Vector<unsigned short>::~Vector(void): multiply defined
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o): Vector<unsigned short>::operator [](unsigned int): multiply defined
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o): Vector<unsigned short>::operator [](unsigned int) const : multiply defined
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o): Vector<unsigned short>::push_back(const unsigned short&): multiply defined
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o): Vector<unsigned short>::back(void): multiply defined
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o): Vector<unsigned short>::erase(unsigned int): multiply defined
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o): Vector<unsigned short>::clear(void): multiply defined
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o): Vector<unsigned short>::fill(unsigned int, unsigned short&): multiply defined
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o): Vector<unsigned short>::operator =(const Vector<unsigned short>&): multiply defined
Unresolved:
NdbEventImpl::setDurability(EventDurability)
gmake[4]: *** [ndb_mgmd] Error 1

On powermacg4, there is information about the origins of the double definitions:
ld: multiple definitions of symbol Vector<unsigned short>::back()
Services.o definition of Vector<unsigned short>::back() in section (__TEXT,__text)
../../../ndb/src/.libs/libndbclient.a(NdbDictionaryImpl.o) definition of Vector<unsigned short>::back() in section (__TEXT,__text)

(the same module names are listed for the other double defined symbols, with the sole exception)
ld: warning multiple definitions of symbol _qsort
../../../mysys/libmysys.a(mf_qsort.o) definition of _qsort in section (__TEXT,__text)
/usr/lib/libm.dylib(qsort.So) definition of _qsort

How to repeat:
Build with NDB on these platforms.
[18 Jan 2005 14:12] Tomas Ulin
Thank you for your bug report. This issue has been committed to our
source repository of that product and will be incorporated into the
next release.

If necessary, you can access the source repository and build the latest
available version, including the bugfix, yourself. More information 
about accessing the source trees is available at
    http://www.mysql.com/doc/en/Installing_source_tree.html