【发布时间】:2011-07-07 12:07:49
【问题描述】:
我正在尝试与 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 操作系统上构建的。
我已经安装了 lib32stdc++6。
生成文件如下所示:
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++.so:
/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
【问题讨论】:
-
可以添加
file -k ./bin/libshared.so main.o的输出吗? -
@Ohad,你看到 osgx 的问题了吗?请粘贴该命令的输出。
-
哎呀错过了那句话感谢@bdonlan 的提醒。是什么解决了使用 -m32 和安装 multilib 的问题。顺便说一句,文件 -k 的输出是“main.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped” 下次遇到此类问题时我会记住该命令,非常感谢:)
标签: linux linker 64-bit x86-64