undefined Ссылка на символ "_ZNSt5__padIcSt11char_traitsIcEE6_S_padERSt8ios_basecPcPKcllb" не экспортируется из libstdc ++. a (libstdc ++. so.6) - PullRequest
0 голосов
/ 10 декабря 2018

Я могу успешно построить свой код, но при попытке запустить получаю следующее сообщение об ошибке.Я использую AIX7.1 , используя GCC4.8.5 .

0509-130 Symbol resolution failed for libadobelinguistic.a because: 0509-136 Symbol _ZNSt5__padIcSt11char_traitsIcEE6_S_padERSt8ios_basecPcPKcllb (number 94) is not exported from dependent module /user/unicore/rs6000aix/compiler/gcc4.8.5/aix6.1/lib/libstdc++.a(libstdc++.so.6). 0509-022 Cannot load module . 0509-026 System error: Cannot run a file that does not have a valid format. 0509-192 Examine .loader section symbols with the 'dump -Tv' command."}

. В нескольких местах я использовал флаг -Wl,--no-undefined дляпровалить проект во время компиляции.но компиляция не дает сбоя.

дешифрованная функция :

std::__pad<char, std::char_traits<char> >::_S_pad(std::ios_base&, char, char*, char const*, long, long, bool)

Я не могу найти ссылку на эту функцию.

Более того, как предлагается в нескольких местах. В случае таких ошибок вам необходимо установить переменную LIBPATH в случае AIX.У меня переменная libpath установлена ​​на

LIBPATH=/user/unicore/rs6000aix/compiler/gcc4.8.5/aix6.1/lib:/opt/freeware/lib:/user/unicore/rs6000aix/compiler/gcc4.8.5/aix6.1/lib/gcc/powerpc-ibm-aix6.1.0.0/4.8.5:/opt/freeware/lib/pthread/ppc64

, но она не работает.

Я нашел ссылку на нее https://sourceforge.net/p/slo/feature-requests/4/., но это бесполезно.

Редактировать: похоже, что libstdc ++ вызывает проблемы в AIX7.1.у нас есть система libstdc ++ и libstdc ++ из gcc4.8.5.когда я связываюсь с системой libstdc ++, gdb запускается успешно, но моя программа не работает, но когда я устанавливаю путь к libstdc ++ в gcc4.8.5.GDB не запускается, но запускается мой исполняемый файл.похоже, что системные libstdc ++ и gcc4.8.5 libstdc ++ не совместимы.

1 Ответ

0 голосов
/ 18 декабря 2018

Проблема была с libstdc ++.По умолчанию LIBPATH было установлено на opt/freeware/lib, где libstdc++ было доступно.Во время компиляции мой источник был связан с libstdc ++, доступным по адресу 'opt / freeware / lib'.где во время выполнения он искал libstdc ++, доступный в gcc4.8.5.вызывая проблему.

установка LIBPATH в каталог gcc lib решает проблему.

...