- 574 megtekintés
Hozzászólások
A demangle / c++filt mire oldja fel ezeket a szimbólumokat?
- A hozzászóláshoz be kell jelentkezni
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 :)
- A hozzászóláshoz be kell jelentkezni
Igen a demangle alapjan stimmel a method signature. Ez csak egy konret pelda, de igazabol semelyik alltalunk hasznalt fuggvenyt nem talalja meg a linker a libekben.
Az ibm doku nem igazan bobeszedu es nem tudom mit jelent a dump outputban a [noIMid] attrumutum.
- A hozzászóláshoz be kell jelentkezni
A dump ugyan azt csinálja, mint linux-on az nm parancs?
- A hozzászóláshoz be kell jelentkezni
Kisseb nagyobb átfedésekkel igen.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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).
- A hozzászóláshoz be kell jelentkezni
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.)
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
Próbáld ki ezt (de csak biztonságos távolságból):
for i in 32 64; do echo "=== $i ==="; ar -X$i tv external/icu_libs_a64/lib/libicuuc.a; done- A hozzászóláshoz be kell jelentkezni
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... :)
- A hozzászóláshoz be kell jelentkezni
32-bites shared object van az archive-ban. Esetleg lehetne a gyökér Makefile-ba egy ilyen
OBJECT_MODE=64
export OBJECT_MODE- A hozzászóláshoz be kell jelentkezni
Ujraforditom az ICU-t -m64 compiler opcioval es megadom a OBJECT_MODE=64 export-ot make elott. Jelentkezem a hirekkel! Koszi a segitseget!!!
- A hozzászóláshoz be kell jelentkezni
Talán -maix64 (gcc) vagy -q64 (xlc) még jobb lenne
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Megegyszer koszonom a segitseget! Sikeresen lefordult es linkelt minden. A boost_locale hianyzo fuggoseget sikerult kivaltani maskent.
- A hozzászóláshoz be kell jelentkezni