Pregunta

Estoy construyendo una biblioteca compartida con GCC 4.5.2 y Boost 1.46.1 (compilado con --build-type=complete) y este es un comando de MakeFile que hace la parte de enlace:

$(CXX) -static -lboost_filesystem -fpic -shared $^ -o $@

Todo se compila bien, pero recibo el siguiente error cuando se carga mediante la aplicación:

plugins/crashdetect.so: undefined symbol: _ZN5boost11filesystem34path21wchar_t_codecvt_facetEv

lddSalidas:

linux-gate.so.1 =>  (0x002f8000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0x00bf5000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x0032d000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00506000)
/lib/ld-linux.so.2 (0x006f6000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0x00110000)

Creo que esto significa que vinculó el impulso estáticamente.

Esto es lo que nm crashdetect.so -u | grep boost dice:

 U _ZN5boost11filesystem34path21wchar_t_codecvt_facetEv
 U _ZN5boost11filesystem36detail13dir_itr_closeERPvS3_
 U _ZN5boost11filesystem36detail28directory_iterator_constructERNS0_18directory_iteratorERKNS0_4pathEPNS_6system10error_codeE
 U _ZN5boost11filesystem36detail28directory_iterator_incrementERNS0_18directory_iteratorEPNS_6system10error_codeE
 U _ZN5boost11filesystem36detail6statusERKNS0_4pathEPNS_6system10error_codeE
 U _ZN5boost6system15system_categoryEv
 U _ZN5boost6system16generic_categoryEv
 U _ZNK5boost11filesystem315directory_entry12m_get_statusEPNS_6system10error_codeE

Así que creo que, dado que ese símbolo va primero en esta lista, lo más probable es que no haya nada especial al respecto.

¿Me estoy perdiendo de algo?

EDITAR:Entonces, ¿es esto imposible o qué?

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top