我正在尝试在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
答案 0 :(得分:3)
我不确定-mi386linux
应该是什么,但是如果你在链接行上用-m32
替换它,那么我怀疑这会有效。
答案 1 :(得分:0)
绝对使用“-m32”,并且在构建命令中尽可能早地放入“-L / usr / lib32”。