AIX link problema

Fórumok

Hozzászólások

A demangle / c++filt mire oldja fel ezeket a szimbólumokat?

Ezzel kezdtem én is, a demangle eredménye ugyan az, mint amit az ld adott:

icu_70::CaseMap::utf8ToUpper(char const*, unsigned int, icu_70::StringPiece, icu_70::ByteSink&, icu_70::Edits*, UErrorCode&)

Ez persze nem jelenti azt, hogy az ld-ben látható symbol mangled eredménye egyezik :)

Nem nagyon értem, de van három random kérdésem:
* Ugye még véletlenül sincs közte semmilyen gcc/g++-szal fordított komponens? (Különböző C++ fordítók garantáltan nem működnek együtt.)
* Ugye minden komponens azonos compiler-opciókkal van fordítva (pl.: -D_THREAD_SAFE)?
* Tudnál egy minimális példát készíteni, ami mutatja a problémát?

1) minden komponenst xlc-vel forditottunk

2) sajnos ezt nem tudom teljes bizonyossaggal megmondani, de ezt a compiler opciot biztosan nem hasznaljuk. A libek (boost, icu) forditasanal sem hasznaljuk explicit.

3) milyen peldara gondolsz? ha valamilyen outputra van szukseged, megprobalom eloallitani.

Sajnos nekem nincs ilyen xlC-m, ezért nem tudom kipróbálni a programod linkelését. No meg az is gond, hogy nekem nincs meg a te programod. Ha mondjuk csapnál egy két fájlból álló mintát, ami mutatja ugyanezt a hibát, ést azt feltöltenéd valahova (github, pl.), akkor legalább ki tudnám próbálni g++ -szal (Aix 6.1 vagy 7.1-en).

Mondjuk azt a részt nem értem, hogy amikor 'statikus lib'-et mondasz, de shared object-et készítesz (igaz, hogy *.a fájlba csomagolva), akkor melyik az igazi?

(`man ld`-ben a `-G` és `-bshared` opciókat tessék megnézni, hogy mit csinálnak.)

Igen, igazad van. Az eredeti makefile (ami egyebek mellett mindenfele script-ekkel generalt) nem tolem szarmazik, nekem csak valahogy gatyaba kellene razni. De elvileg ez nem kellene ilyen jellegu hibat dobjon, nem?

Ha kicserelem -bshared -re akkor minden hivatkozott std c fuggveny is hianyzik neki, nem csak a boost_locale es ICU fuggvenyei.

Van valami ottleted mi lehet a [noIMid] attributum a dump listazasban?

bash-4.3$ for i in 32 64; do echo "=== $i ==="; ar -X$i tv external/icu_libs_a64/lib/libicuuc.a; done
=== 32 ===
rwxr-xr-x  1087/917   5180649 Jan 26 11:47 2023 libicuuc.so
=== 64 ===

32bit-es lenne a lib??? Ha ez igy van (es ugy nezem igy van), akkor rettento bena vagyok... :)

Szia,

a kovetkezo opciokkal sikeresen leforditottam az ICU-t es a projektem is linkelni tud vele:

export CFLAGS="-fPIC -m64"
export CXXFLAGS="-std=c++14 -fPIC -m64"
export OBJECT_MODE=64

Az egyetlen hianyzo fuggveny ami nem linkel az a boost_locale-bol jon es idokozben kiderult, hogy az viszont gcc-vel forditjuk. Szoval minden tipped bejott! :)

Halas koszonet a segitsegert. Amennyiben sikerul az utolso hibat is elharitani, akkor jelzek.