在Linux x64上与x86共享库链接

时间:2011-07-07 12:07:49

标签: linux linker 64-bit 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

一些细节:
共享库名称为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

有什么想法吗?

编辑: 将-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

运行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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

绝对使用“-m32”,并且在构建命令中尽可能早地放入“-L / usr / lib32”。