Dear all, here follows some strange behaviour using gcc, if someone has any idea to fix :-) We have some strange link errors while linking some servers. Our code is linked with Tibco Hawk 4.2 The following lines shows only errors on class AmiStatus but there are others problems (btw all link errors are related to symbols present in libtibhawkamicpp.so) Compilers tested were gcc 3.2.2 and 3.4.2 Our source tree is also compilable on SunOS and AIX, using Hawk 4.2 libraries for those platforms. Linking didn't produce any error ... Is it a gcc bug ? are the Hawk libraries for linux broken ? Whole gcc output on demand (12Mb) meaningful details : gcc link stage error messages [grep on AmiStatus] /mylibpath/libHAT03.so: undefined reference to `AmiStatus::AmiStatus(void*)' /mylibpath/libKMI03.so: undefined reference to `AmiStatus::getText()' /mylibpath/libKMI03.so: undefined reference to `AmiStatus::operator=(AmiStatus const&)' /mylibpath/libHAT03.so: undefined reference to `AmiStatus::setStatus(int, char const*, ...)' /mylibpath/libKMI03.so: undefined reference to `AmiStatus::AmiStatus()' /mylibpath/libKMI03.so: undefined reference to `AmiStatus::operator!=(void*)' /mylibpath/libHAT03.so: undefined reference to `AmiStatus::operator==(void*)' additional gcc output obtained in link stage using -Wl,--trace,--print-map,--cref [grep on AmiStatus] AmiStatus type_info function /mylibpath/libtibhawkamicpp.so [is a B entry for nm] AmiStatus virtual table /mylibpath/libtibhawkamicpp.so [is a V entry for nm] AmiStatus::~AmiStatus(void) /mylibpath/libtibhawkamicpp.so [is a W entry for nm] AmiStatus::AmiStatus() /mylibpath/libHAT03.so [is a T entry for nm] AmiStatus::AmiStatus(void*) /mylibpath/libHAT03.so [is a T entry for nm] AmiStatus::getText() /mylibpath/libHAT03.so [is a T entry for nm] AmiStatus::operator!=(void*) /mylibpath/libHAT03.so [is a T entry for nm] AmiStatus::operator=(AmiStatus const&) /mylibpath/libHAT03.so [is a T entry for nm] AmiStatus::operator==(void*) /mylibpath/libHAT03.so [is a T entry for nm] AmiStatus::setStatus(int, char const*, ...) /mylibpath/libHAT03.so [is a T entry for nm] AmiStatus::~AmiStatus() /mylibpath/libKMI03.so [is a T entry for nm] AmiStatus::~AmiStatus() /mylibpath/libKMI03.so [is a T entry for nm] typeinfo for AmiStatus /mylibpath/libKMI03.so typeinfo name for AmiStatus /mylibpath/libKMI03.so vtable for AmiStatus /mylibpath/libKMI03.so nm -A on /mylibpath/libtibhawkamicpp.so, as you can see "undefined references" are not so undefined at all (T) /mylibpath/libtibhawkamicpp.so:00004230 T AmiStatus::AmiStatus(void) /mylibpath/libtibhawkamicpp.so:000069c0 W AmiStatus::~AmiStatus(void) /mylibpath/libtibhawkamicpp.so:00004260 T AmiStatus::AmiStatus(ami_ErrorCode) /mylibpath/libtibhawkamicpp.so:000043c0 T AmiStatus::AmiStatus(int) /mylibpath/libtibhawkamicpp.so:00004400 T AmiStatus::AmiStatus(int, char const *) /mylibpath/libtibhawkamicpp.so:00004340 T AmiStatus::AmiStatus(void *) /mylibpath/libtibhawkamicpp.so:000042a0 T AmiStatus::AmiStatus(AmiStatus const &) /mylibpath/libtibhawkamicpp.so:000044d0 T AmiStatus::operator=(ami_ErrorCode) /mylibpath/libtibhawkamicpp.so:00004510 T AmiStatus::operator=(void *) /mylibpath/libtibhawkamicpp.so:000045a0 T AmiStatus::operator=(AmiStatus const &) /mylibpath/libtibhawkamicpp.so:00004440 T AmiStatus::duplicateError(void) /mylibpath/libtibhawkamicpp.so:000047a0 T AmiStatus::operator==(ami_ErrorCode) /mylibpath/libtibhawkamicpp.so:00004700 T AmiStatus::operator==(void *) /mylibpath/libtibhawkamicpp.so:00004640 T AmiStatus::operator==(AmiStatus const &) /mylibpath/libtibhawkamicpp.so:00004890 T AmiStatus::getCode(void) /mylibpath/libtibhawkamicpp.so:00004960 T AmiStatus::getFile(void) /mylibpath/libtibhawkamicpp.so:00004990 T AmiStatus::getLine(void) /mylibpath/libtibhawkamicpp.so:000048c0 T AmiStatus::getText(void) /mylibpath/libtibhawkamicpp.so:000048f0 T AmiStatus::getThread(void) /mylibpath/libtibhawkamicpp.so:000047e0 T AmiStatus::operator!=(ami_ErrorCode) /mylibpath/libtibhawkamicpp.so:00004750 T AmiStatus::operator!=(void *) /mylibpath/libtibhawkamicpp.so:000046a0 T AmiStatus::operator!=(AmiStatus const &) /mylibpath/libtibhawkamicpp.so:00004840 T AmiStatus::operator!(void) const /mylibpath/libtibhawkamicpp.so:00004820 T AmiStatus::ok(void) const /mylibpath/libtibhawkamicpp.so:00005bd0 T AmiAsyncMethod::sendError(AmiSubscription *, AmiStatus &) /mylibpath/libtibhawkamicpp.so:00004920 T AmiStatus::setStatus(int, char const *,...) /mylibpath/libtibhawkamicpp.so:000049c0 T AmiStatus::setStatusV(int, char const *, void *) /mylibpath/libtibhawkamicpp.so:00004860 T AmiStatus::stamp(char const *, int) /mylibpath/libtibhawkamicpp.so:00006980 W AmiStatus type_info function /mylibpath/libtibhawkamicpp.so:00009818 B AmiStatus type_info node /mylibpath/libtibhawkamicpp.so:00008110 V AmiStatus virtual table Any ideas ? Thanks in advance David Denis tel: +33 (0) 147 627 736 mailto: david.denis@xxxxxxxxxxx ----------------------------------------------------------------- Visit our Internet site at http://www.reuters.com Get closer to the financial markets with Reuters Messaging - for more information and to register, visit http://www.reuters.com/messaging Any views expressed in this message are those of the individual sender, except where the sender specifically states them to be the views of Reuters Ltd.