[Cmake] static libs and undefined references

Iker Arizmendi iker at research.att.com
Thu, 08 Apr 2004 19:02:16 -0400


Hello all.

I'm creating several static libraries as part of
cmake project that are giving me a lot of grief.

In short, we have a CMake project that creates several
static libraries in two directories and an executable
that uses them in a third. The libraries build just
fine, and the executable builds fine, but fails during
linking with "undefined reference" errors. I've checked
the libraries in question to make sure they export
those symbols with nm and they do. I've also checked
the link line CMake creates and it includes the
libraries that it should. In the past I've had
errors like these and its always been something
silly (forgetting to define a function or virtual dtor,
missing a library on the link line, wrong link order,
etc) but now I'm at a loss...

Has anyone encountered this before?

Regards,
Iker

Relevant info:

cmake v. 1.8.2
g++ v. 3.2.2


Maybe relevant:

- When dumping the symbols in the static library I notice
that nm lists some of the symbols as both T and U (in
the text section AND undefined). Should this be so?

- CMake puts the executable's object file first in the link
line followed by all the library locations (-L) and then the
libraries to use (-l). When I move the executable's .o file
to _after_ the libraries the number of undefined references
is reduced (but unfortunately not eliminated). The symbols
still listed as undefined are still symbols that appear in
the symbol listing for the libraries in use - for some
reason the linker doesn't see them.



-- 
Iker Arizmendi
AT&T Labs - Research
Speech and Image Processing Lab
e: iker at research.att.com
w: http://research.att.com