在Linux x64上与x86共享库链接

Oha*_*esh 5 linux 64-bit linker x86-64

我试图在x64 Ubuntu 11.04 Natty Narwhal上链接x86共享库,但是我得到以下消息:

/usr/bin/ld: skipping incompatible ./bin/libshared.so when searching for -lshared
/usr/bin/ld: cannot find -lshared
Run Code Online (Sandbox Code Playgroud)

一些细节:
共享库名称是libshared.so
共享库是在x86 OS上构建的.
我已经安装了lib32stdc ++ 6.
makefile看起来像这样:

test: main.o
    g++ -mi386linux -L./bin -lshared main.o -o test

main.o: main.cpp
    g++ -m32 -c main.cpp -o main.o
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

编辑:将-mi386linux标志更改为-m32后,我收到此错误:

/usr/bin/ld: cannot find -lshared  
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/libstdc++.a when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

运行locate我找到libstdc ++.所以在以下地方:

/usr/lib/x86_64-linux-gnu/libstdc++.so.6  
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.14  
/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5/libstdc++.so  
/usr/lib32/libstdc++.so.6  
/usr/lib32/libstdc++.so.6.0.14
Run Code Online (Sandbox Code Playgroud)

Tom*_*omH 3

我不确定它-mi386linux应该是什么,但如果你-m32在链接线上替换它,那么我怀疑这会起作用。