2013-06-04 5 views
15

Sto usando Ubuntu 13.10 a 64 bit e sto ricevendo i seguenti errori durante la compilazione dei wrapper python della libreria vlfeat./usr/bin/ld: saltando incompatibile foo.so durante la ricerca di foo

g++ -o _vlfeat.so ../../vl/aib.o ../../vl/generic.o ../../vl/hikmeans.o ../../vl/ikmeans.o ../../vl/imopv.o ../../vl/mathop.o ../../vl/pgm.o ../../vl/rodrigues.o ../../vl/stringop.o ../../vl/getopt_long.o ../../vl/host.o ../../vl/imop.o ../../vl/imopv_sse2.o ../../vl/mser.o ../../vl/random.o ../../vl/sift.o ../../vl/dsift.o mser/vl_erfill.o mser/vl_mser.o sift/vl_sift.o sift/vl_dsift.o sift/vl_siftdescriptor.o imop/vl_imsmooth.o misc/vl_binsum.o kmeans/vl_hikmeans.o kmeans/vl_ikmeans.o kmeans/vl_hikmeanspush.o kmeans/vl_ikmeanspush.o py_vlfeat.o -m64 -msse -m32 -msse -shared -lboost_python-mt-py27 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../libboost_python-mt-py27.so when searching for -lboost_python-mt-py27 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../libboost_python-mt-py27.a when searching for -lboost_python-mt-py27 
/usr/bin/ld: skipping incompatible /usr/lib/libboost_python-mt-py27.so when searching for -lboost_python-mt-py27 
/usr/bin/ld: skipping incompatible /usr/lib/libboost_python-mt-py27.a when searching for -lboost_python-mt-py27 
/usr/bin/ld: cannot find -lboost_python-mt-py27 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.7/libstdc++.so when searching for -lstdc++ 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.7/libstdc++.a when searching for -lstdc++ 
/usr/bin/ld: cannot find -lstdc++ 
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libm.so when searching for -lm 
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libm.a when searching for -lm 
/usr/bin/ld: cannot find -lm 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.7/libgcc_s.so when searching for -lgcc_s 
/usr/bin/ld: cannot find -lgcc_s 
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.so when searching for -lc 
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.a when searching for -lc 
/usr/bin/ld: cannot find -lc 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.7/libgcc_s.so when searching for -lgcc_s 
/usr/bin/ld: cannot find -lgcc_s 
collect2: error: ld returned 1 exit status 
make: *** [_vlfeat.so] Error 1 

Qualsiasi soluzione per far funzionare questa libreria su architettura a 64 bit?

+7

avete sia '' -m32' e -m64' specificato. .. quale volete? –

+0

Non sono sicuro di cosa rappresentano perché sono un noob in C++. Puoi spiegarci un po 'su questo? Per tua informazione, sto usando Ubuntu a 64 bit. –

+1

'-m32' genera codice a 32 bit e' -m64' genera codice a 64 bit (questo dovrebbe essere l'impostazione predefinita sul sistema). Dovresti specificare solo uno di essi, se ce n'è uno. È possibile eseguire eseguibili a 32 o 64 bit sul sistema, ma collegamenti eseguibili a 32 bit con librerie a 32 bit e collegamenti eseguibili a 64 bit con librerie a 64 bit. Hai compilato il codice sorgente per generare i file .o oppure sono venuti da qualche altra parte? –

risposta

10

rimuovere -m32 nella linea di comando bandiere

per costruire con 32bit binario, è necessario installare

sudo apt-get install gcc-multilib e sudo apt-get install ia32-libs-dev

+0

* "sudo apt-get install gcc-multilib" * questo è un trucco di Linux. C'è un tale trucco per Windows? (bloccato con lo stesso problema di collegamento su Windows 7) – Fennekin

+3

'E: Il pacchetto 'ia32-libs-dev' non ha candidati all'installazione' – user

+0

' sudo apt-get install gcc-multilib' risolve il problema su debian jessie per me. – jitter