Question

Je construis une bibliothèque partagée avec GCC 4.5.2 et Boost 1.46.1 (compilé avec --build-type=complete) Et c'est une commande de MakeFile qui fait la partie de liaison:

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

Tout se compile bien, mais j'obtiens l'erreur suivante lorsqu'elle est chargée par l'application:

plugins/crashdetect.so: undefined symbol: _ZN5boost11filesystem34path21wchar_t_codecvt_facetEv

lddles sorties:

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)

Je crois que cela signifie qu'il a lié Boost statiquement.

C'est quoi nm crashdetect.so -u | grep boost dit:

 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

Je pense donc que ce symbole passe d'abord dans cette liste, il n'y a probablement rien de spécial à ce sujet.

Est-ce que je manque quelque chose?

ÉDITER:Alors, est-ce impossible ou quoi?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top