Ошибка ссылки g++ для библиотеки xerces-c
g++ -std=c++14 -m32 -I/export/home/ab0599/local/include -L/export/home/ab0599/local/lib xerces_tst1.cpp -o xerces_tst1 -lxerces-c-3.2
Undefined first referenced
symbol in file
__1cG__CrunKpure_error6F_v_ /export/home/ab0599/local/lib/libxerces-c-3.2.so
__1cG__CrunIex_alloc6FI_pv_ /export/home/ab0599/local/lib/libxerces-c-3.2.so
__1cG__CrunIex_throw6Fpvpkn0AQstatic_type_info_pF1_v_v_ /export/home/ab0599/local/lib/libxerces-c-3.2.so
__1cG__CrunKcross_cast6Fpvpkn0AQstatic_type_info_4_1_ /export/home/ab0599/local/lib/libxerces-c-3.2.so
typeinfo for xercesc_3_2::XMLException /var/tmp//ccjKE5ec.o
xercesc_3_2::XMLPlatformUtils::Initialize(char const*, char const*, xercesc_3_2::PanicHandler*, xercesc_3_2::MemoryManager*) /var/tmp//ccjKE5ec.o
__1cG__CrunGex_get6F_pv_ /export/home/ab0599/local/lib/libxerces-c-3.2.so
__1cG__CrunMex_rethrow_q6F_v_ /export/home/ab0599/local/lib/libxerces-c-3.2.so
xercesc_3_2::XMLUni::fgXercescDefaultLocale /var/tmp//ccjKE5ec.o
__1cG__CrunSregister_exit_code6FpG_v_v_ /export/home/ab0599/local/lib/libxerces-c-3.2.so
__1cG__CrunHex_skip6F_b_ /export/home/ab0599/local/lib/libxerces-c-3.2.so
xercesc_3_2::XMLPlatformUtils::Terminate() /var/tmp//ccjKE5ec.o
__1cG__CrunIex_clean6F_v_ /export/home/ab0599/local/lib/libxerces-c-3.2.so
__1cG__CrunKex_rethrow6F_v_ /export/home/ab0599/local/lib/libxerces-c-3.2.so
c::c(N6, (int0_t)) /export/home/ab0599/local/lib/libxerces-c-3.2.so
c::c(n6, (int0_t)) /export/home/ab0599/local/lib/libxerces-c-3.2.so
__1c2K6Fpv_v_ /export/home/ab0599/local/lib/libxerces-c-3.2.so
__1c2k6Fpv_v_ /export/home/ab0599/local/lib/libxerces-c-3.2.so
ld: fatal: symbol referencing errors
collect2: error: ld returned 1 exit status
Пожалуйста, помогите решить проблему. Я пробовал разные комбинации параметров, но ничего не помогло.
2 ответа
Я решил проблему. Проблема была в том, что я выполнил настройку с помощью компилятора CC:
./configure --prefix=/export/home/ab0599/local --disable-network CC=cc CXX=CC CFLAGS=-m64 CXXFLAGS=-m64
но попытался скомпилировать пример с gcc. Теперь я скомпилировал библиотеку компилятором gcc и проблема была решена.
Пожалуйста, проверьте (на мой взгляд) несоответствующие пути, указанные в "-L/export/home/sian/local/lib" и показанные в "/export/home/ab0599/local/lib". Если у вас есть ссылка на этот путь, это нормально.
сделать ldd /export/home/ab0599/local/lib/libxerces-c-3.2.so
и попытаться решить (вероятно, отсутствуют) зависимости.
Если зависимости удовлетворены, возможно, у вас несоответствие версий (скорее всего, ваши libxerces были собраны с другой версией общей зависимости, чем ваш xerces_tst1)