Build error: missing stlpmtx_std symbols

Greetings,

Thanks to this Forum and the patches at http://homepages.cae.wisc.edu/~kraftche/OCC/patches.html I've been able to come pretty far with compiling OpenCASCADE. This is on Debian lenny (testing) with gcc 4.2.1 and libstlport5.1 5.1.4-1. I get stuck when trying to link DRAWEXE:

/bin/sh ../../../libtool --tag=CXX --mode=link g++ -ffriend-injection -fpermissive -DCSFDB -DOCC_CONVERT_SIGNALS -DLIN -DLININTEL -D_GNU_SOURCE=1 -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.13/include -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.13/include/linux -g -DDEB -D_DEBUG -o DRAWEXE DRAWEXE.o ../TKDraw/libTKDraw.la ../TKMesh/libTKMesh.la ../TKGeomAlgo/libTKGeomAlgo.la ../TKTopAlgo/libTKTopAlgo.la ../TKHLR/libTKHLR.la ../TKGeomBase/libTKGeomBase.la ../TKG2d/libTKG2d.la ../TKBRep/libTKBRep.la ../TKMath/libTKMath.la ../TKG3d/libTKG3d.la ../TKernel/libTKernel.la -L/usr/lib -lstlport -L/usr/lib -ltcl8.4 -L/usr/lib -ltk8.4 -ldl -lpthread -lieee -lm
mkdir .libs
g++ -ffriend-injection -fpermissive -DCSFDB -DOCC_CONVERT_SIGNALS -DLIN -DLININTEL -D_GNU_SOURCE=1 -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.13/include -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.13/include/linux -g -DDEB -D_DEBUG -o .libs/DRAWEXE DRAWEXE.o ../TKDraw/.libs/libTKDraw.so ../TKMesh/.libs/libTKMesh.so ../TKGeomAlgo/.libs/libTKGeomAlgo.so ../TKTopAlgo/.libs/libTKTopAlgo.so ../TKHLR/.libs/libTKHLR.so ../TKGeomBase/.libs/libTKGeomBase.so ../TKG2d/.libs/libTKG2d.so ../TKBRep/.libs/libTKBRep.so ../TKMath/.libs/libTKMath.so ../TKG3d/.libs/libTKG3d.so ../TKernel/.libs/libTKernel.so -L/usr/lib -lstlport -ltcl8.4 -ltk8.4 -ldl -lpthread -lieee -lm -Wl,--rpath -Wl,/home/hazelsct/x86_64-linux/lib
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::_Filebuf_base::_M_close()'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::numpunct::id'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::_Filebuf_base::_M_write(char*, long)'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::_Filebuf_base::_Filebuf_base()'
../TKernel/.libs/libTKernel.so: undefined reference to `stlpmtx_std::ios_base::app'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::_Filebuf_base::_M_file_size()'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::_Underflow >::_M_doit(stlpmtx_std::basic_filebuf >*)'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::cout'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::_Filebuf_base::_M_unmap(void*, long)'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::_Filebuf_base::_M_seek(long, int)'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::locale::~locale()'
../TKGeomAlgo/.libs/libTKGeomAlgo.so: undefined reference to `stlpmtx_std::cerr'../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::ctype::scan_is(stlpmtx_std::ctype_base::mask, char const*, char const*) const'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::ios_base::~ios_base()'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::__node_alloc::_M_allocate(unsigned long&)'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::__node_alloc::_M_deallocate(void*, unsigned long)'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::__stl_throw_length_error(char const*)'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::ios_base::ios_base()'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::ios_base::_M_throw_failure()'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::ios_base::badbit'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::locale::_M_get_facet(stlpmtx_std::locale::id const&) const'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::cin'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::ctype::scan_not(stlpmtx_std::ctype_base::mask, char const*, char const*) const'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::locale::locale(stlpmtx_std::locale const&)'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::ios_base::goodbit'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::_Filebuf_base::_M_page_size'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::codecvt::id'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::locale::operator=(stlpmtx_std::locale const&)'
../TKernel/.libs/libTKernel.so: undefined reference to `stlpmtx_std::ios_base::out'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::ios_base::imbue(stlpmtx_std::locale const&)'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::_Filebuf_base::_M_open(char const*, int)'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::locale::_M_use_facet(stlpmtx_std::locale::id const&) const'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::ctype::id'
../TKDraw/.libs/libTKDraw.so: undefined reference to `stlpmtx_std::locale::locale()'
../TKDraw/.libs/libTKDraw.so: undefined reference to `typeinfo for stlpmtx_std::ios_base'
collect2: ld returned 1 exit status
make[3]: *** [DRAWEXE] Error 1
make[3]: Leaving directory `/home/hazelsct/opencascade-6.2.0/ros/adm/make/DRAWEXE'

What is this? Do I need a newer stlport library?

Thanks in advance for any help you can provide.

-Adam

Adam Powell's picture

Solved the problem by downgrading to libstlport 4.6, apparently 5.1 dropped some symbols needed by DRAWEXE.

Share and enjoy,
Adam