Błąd podczas linkowania biblioteki .so z Intel 32bit pod Amd 64bit

0

Cześć,

miał ktoś z Was problem z takim "crossplatformowym" linkowaniem? Mianowicie mam biblioteke X.so skompilowaną pod intelowską, 32 bitową maszyną, nie jestem pewien jaki był target podczas kompilacji (-march=i386 czy -march=i686) oraz jaką wersją kompilatora została ona zbudowana jednak na innym komputerze, pod Ubuntu (raczej dosc aktualne na nim bylo wsio) nie mialem zadnych problemow z linkowaniem. Jednak u siebie w domu na AMD Phenom i Ubuntu 64bit (tak samo aktualne) mam problem ze zlinkowaniem tej biblioteki, g++ krzyczy:

X.so: could not read symbols: File in wrong format

Jakie mogą być tego przyczyny? Z gory dzieki za pomoc.

--- edit ---
Proba rekompilacji aplikacji korzystajacej z tego liba z opcja -march=i686 konczy sie:

main.cpp:1:0: error: CPU you selected does not support x86-64 instruction set

Moze cos w tym kierunku powinienem szukac, rozumiem, ze problem jest wlasnie na linii 32 - 64 bit. Czy da sie w ogole cos z tym zrobic?

--- edit ---
Po małym researchu doszedłem do wniosku, że w ten sposób jedynie się pogrążam w zależnościach, a ręczne ich rozwiązywanie może nie być trakie proste. Odnalazłem magiczną opcję -m32, która jednak tworzy kolejne problemy - potrzebuje mieć wszystkie biblioteki w wersji 32 bit, o ile dobrze to rozumiem.

In file included from /usr/include/features.h:388:0,
                 from /usr/include/assert.h:37,
                 from /usr/include/boost/assert.hpp:36,
                 from /usr/include/boost/statechart/detail/rtti_policy.hpp:11,
                 from /usr/include/boost/statechart/event_base.hpp:11,
                 from /usr/include/boost/statechart/event.hpp:11,
                 from /usr/include/boost/statechart/simple_state.hpp:11,
                 from /usr/include/boost/statechart/state.hpp:11,
                 from main.cpp:1:
/usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory

Macie może jakiś inny pomysł niż reczne instalowanie pakietów -dev w wersji i386?

1

prawdopodobnie NIE DA SIĘ wlinkować 32-bitowej biblioteki do 64-bitowego programu. albo kompiluj wszystko na 32 bity, albo wszystko na 64.

Macie może jakiś inny pomysł niż reczne instalowanie pakietów -dev w wersji i386?
jedyny „inny pomysł” to przekompilowanie libki na 64 bity.

1 użytkowników online, w tym zalogowanych: 0, gości: 1