AIX futas ideju link problema

Fórumok

Sziasztok,

Korabban kuzdottem AIX linkelessel es kaptam valaszt a problemamra, igy most batorkodok megint hozzatok fordulni segitsegert.

Adott egy executable (ucsrvwp) amit egy rakat lib-et archive libet hasznal. ldd alapjan minden rendben:
 

-bash-5.1$ ldd ./ucsrvwp
./ucsrvwp needs:
         /usr/lib/libc.a(shr_64.o)
         /usr/lib/libpthread.a(shr_xpg5_64.o)
         /opt/freeware/lib//libstdc++.a(libstdc++.so.6)
         /intsys/M122AD/B/automationengine/bin/libzu00132.a
         /intsys/M122AD/B/automationengine/bin/libucmsgq.a
         /intsys/M122AD/B/automationengine/bin/libsysapi.a
         /intsys/M122AD/B/automationengine/bin/libuccache.a
         /usr/lib/libdl.a(shr_64.o)
         /intsys/M122AD/B/automationengine/bin/libzusynchk.a
         /intsys/M122AD/B/automationengine/bin/libunicode.a
         /intsys/M122AD/B/automationengine/bin/libzukms.a
         /intsys/M122AD/B/automationengine/bin/libzugss.a
         /intsys/M122AD/B/automationengine/bin/libucudb32.a
         /intsys/M122AD/B/automationengine/bin/libucsj.a
         /intsys/M122AD/B/automationengine/bin/libucusqlsl.a
         /intsys/M122AD/B/automationengine/bin/libucuqm.a
         /intsys/M122AD/B/automationengine/bin/libucuhost.a
         /intsys/M122AD/B/automationengine/bin/libucreprtr.a
         /intsys/M122AD/B/automationengine/bin/libucuser_r.a
         /intsys/M122AD/B/automationengine/bin/libucprmptr.a
         /intsys/M122AD/B/automationengine/bin/libucdvar_r.a
         /usr/lib/libc.a(_shr_64.o)
         /unix
         /usr/lib/libcrypt.a(shr_64.o)
         /usr/lib/libpthread.a(_shr_xpg5_64.o)
         /opt/freeware/lib//libgcc_s.a(shr.o)
         /usr/lib/libc++.a(shr_64.o)
         /usr/lib/libc++.a(cxxabi_64.o)
         /intsys/M122AD/B/automationengine/bin/libuc001.a
         /intsys/M122AD/B/automationengine/bin/libucexith.a
         /intsys/M122AD/B/automationengine/bin/libcppcore.a
         /intsys/M122AD/B/automationengine/bin/libucuohc.a
         /intsys/M122AD/B/automationengine/bin/libucusr.a
         /intsys/M122AD/B/automationengine/bin/libucuacl.a
         /intsys/M122AD/B/automationengine/bin/libucumeld.a
         /intsys/M122AD/B/automationengine/bin/libucukal.a
         /intsys/M122AD/B/automationengine/bin/libucurep.a
         /intsys/M122AD/B/automationengine/bin/libzuxml.a
         /intsys/M122AD/B/automationengine/bin/libucdsfun.a
         /intsys/M122AD/B/automationengine/bin/libucucrypt.a
         /intsys/M122AD/B/automationengine/bin/libucqert.a
         /intsys/M122AD/B/automationengine/bin/libperiodcalc.a
         /intsys/M122AD/B/automationengine/bin/libucuhg.a
         /intsys/M122AD/B/automationengine/bin/libucuolcprc.a
         /intsys/M122AD/B/automationengine/bin/libucuilm.a
         /intsys/M122AD/B/automationengine/bin/libucumulti.a
         /intsys/M122AD/B/automationengine/bin/libucsmtp.a
         /intsys/M122AD/B/automationengine/bin/libucuhsta.a
         /intsys/M122AD/B/automationengine/bin/libucucc.a
         /intsys/M122AD/B/automationengine/bin/libucldap.a
         /intsys/M122AD/B/automationengine/bin/libucumqa.a
         /intsys/M122AD/B/automationengine/bin/libucrtl.a
         /usr/lib/libC.a(shrcore_64.o)
         /usr/lib/libC.a(ansicore_64.o)

Viszont futas idoben a kovetkezo hibauzenettel szall el:

-bash-5.1$ ./ucsrvwp
Could not load program ucsrvwp:
Symbol resolution failed for ucsrvwp because:
        Symbol _ZN7automic7unicode9converterC1EN5boost17basic_string_viewIcSt11char_traitsIcEEES6_ccm (number 414) is not exported from dependent
          module /intsys/M122AD/B/automationengine/bin/libunicode.a.
        Symbol _ZNK7automic7unicode9converterclB5cxx11EN5boost17basic_string_viewIcSt11char_traitsIcEEE (number 415) is not exported from dependent
          module /intsys/M122AD/B/automationengine/bin/libunicode.a.
Examine .loader section symbols with the 'dump -Tv' command.

Minden komponenst gcc-vel forditunk, -std=c++14 es -maix64 opcioval.

A kerdeses construktor demangler szerint a kovetkezo:

automic::unicode::converter::converter(boost::basic_string_view<char, std::char_traits<char> >, boost::basic_string_view<char, std::char_traits<char> >, char, char, unsigned long)

Az libunicode.a ezeket exportalja a dump alapjan (-Tv -X64 opciok):

-bash-5.1$ dump -X64 -Tv libunicode.a | grep 7automic7unicode9converter
[522]   0x20007b90    .data      EXP     DS   Ldef        [noIMid] _ZN7automic7unicode9converterC2EN5boost17basic_string_viewIcSt11char_traitsIcEEES6_ccm
[523]   0x20007b90    .data      EXP     DS   Ldef        [noIMid] _ZN7automic7unicode9converterC1EN5boost17basic_string_viewIcSt11char_traitsIcEEES6_ccm
[524]   0x20007ba8    .data      EXP     DS   Ldef        [noIMid] _ZNK7automic7unicode9converterclB5cxx11EN5boost17basic_string_viewIcSt11char_traitsIcEEE
[525]   0x20007bc0    .data      EXP     DS   Ldef        [noIMid] _ZN7automic7unicode9converterD2Ev
[526]   0x20007bc0    .data      EXP     DS   Ldef        [noIMid] _ZN7automic7unicode9converterD1Ev
[962]   0x2000a3b0    .data      EXP     DS   Ldef        [noIMid] _ZN7automic7unicode9converterC2ENS0_8encodingES2_ccm
[963]   0x2000a3b0    .data      EXP     DS   Ldef        [noIMid] _ZN7automic7unicode9converterC1ENS0_8encodingES2_ccm
[964]   0x2000a3c8    .data      EXP     DS   Ldef        [noIMid] _ZNK7automic7unicode9converterclB5cxx11EN5boost17basic_string_viewIcSt11char_traitsIcEEEm
demangler:
automic::unicode::converter::converter(boost::basic_string_view<char, std::char_traits<char> >, boost::basic_string_view<char, std::char_traits<char> >, char, char, unsigned long)
automic::unicode::converter::converter(boost::basic_string_view<char, std::char_traits<char> >, boost::basic_string_view<char, std::char_traits<char> >, char, char, unsigned long)
automic::unicode::converter::operator()[abi:cxx11](boost::basic_string_view<char, std::char_traits<char> >) const
automic::unicode::converter::~converter()
automic::unicode::converter::~converter()
automic::unicode::converter::converter(automic::unicode::encoding, automic::unicode::encoding, char, char, unsigned long)
automic::unicode::converter::converter(automic::unicode::encoding, automic::unicode::encoding, char, char, unsigned long)
automic::unicode::converter::operator()[abi:cxx11](boost::basic_string_view<char, std::char_traits<char> >, unsigned long) const

Mi lehet a hiba?

Hozzászólások

Symbol _ZN7automic7unicode9converterC1EN5boost17basic_string_viewIcSt11char_traitsIcEEES6_ccm (number 414)

Ha jól látom, akkor ennek as szimbóluma nem 414, hanem 523-mas indexű. Ez nem lehet probléma?

Az /intsys/M122AD/B/automationengine/bin/libunicode.a véletlenül nem egy symlink, ami rossz helyre - nem létező fájlra, vagy nem az itt szükséges verziójú libre - mutat?

ls -al /intsys/M122AD/B/automationengine/bin/

Ugy nez ki nagyon sok dolog ossze van itt kavarodva. Shared libeket forditunk es minden .a kiterjesztest kap a vegen. Ezek a .a statikus libek ugy nez ki valojaban shared libek, stb. Eloszor rendbe teszem ezeket a dolgokat. Ha ezek utan is van problema, jelentkezek.