Re: [Log4cplus-devel] log4cplus and undefined symbol with Sunstudio
Logging Framework for C++
Brought to you by:
wilx
From: Václav H. <v.h...@sh...> - 2011-05-31 21:03:10
|
Jeremy C. Reed wrote, On 31.5.2011 22:28: > Using Sunstudio CC: Sun C++ 5.10 SunOS_sparc 2009/06/03 > > $ /usr/bin/CC -I/udir/jreed/opt/log4cplus/include -L/udir/jreed/opt/log4cplus/lib -llog4cplus ~/l1.cc > Undefined first referenced > symbol in file > log4cplus::Logger::~Logger() l1.o > log4cplus::Logger log4cplus::Logger::getInstance(const std::string &) > l1.o > ld: fatal: Symbol referencing errors. No output written to a.out > > > Here is example code: > > $ cat ~/l1.cc > #include <log4cplus/logger.h> > > int main () > { > using namespace log4cplus; > Logger logger = Logger::getInstance("main"); > return 0; > } > > Using g++ for this compiles/links fine. I think Sunstudio is more > strict by default. > > Note that the installed log4cplus was builting using g++ (GCC) 3.4.3 > (csl-sol210-3_4-branch+sol_rpath). > > So the installed header and the logger.cxx code has: > > static Logger getInstance(const log4cplus::tstring& name); > > getInstance (const log4cplus::tstring& name) > > But nm shows: > > [2134] | 251340| 48|FUNC |GLOB |0 |227 |log4cplus::Logger::getInstance(std::string ) > > Notice that the "const" and the "&" (ampersand) is gone. > > As for the other undefined symbol, I don't know. > > $ nm ~/opt/log4cplus/lib/liblog4cplus.so | c++filt | grep log4cplus::Logger::~Logger > [1852] | 251568| 104|FUNC |GLOB |0 |227 |log4cplus::Logger::~Logger() > [2116] | 251136| 108|FUNC |GLOB |0 |227 |log4cplus::Logger::~Logger() > [1369] | 251460| 108|FUNC |GLOB |0 |227 |log4cplus::Logger::~Logger() > > > I had this problem with 1.0.4 and with code from subversion (I am at > revision 1535). > > This may not be a log4cplus problem, but maybe someone here recognizes > this or has some ideas? > That sounds like you could have headers/binaries mismatch. Another thing, try putting the -llog4cplus at the end of the command line. -- VH |