Problema vincular boost.filesystem estáticamente a una biblioteca compartida
-
29-10-2019 - |
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
ldd
Salidas:
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