linux 64位下与32位库链接
让我解释一下。 我将 webbots 与 aldebaran SDK。我的操作系统是 Debian Squeeze amd64。 Webots(64 位)无法与 aldebaran SDK 一起使用,因为它们的库是针对 32 位编译的。我没有在 64 位中重新编译的库的源代码。 当尝试在 webots 下编译默认的 nao 控制器时,我收到以下错误:
g++ -o naoqi_for_webots
naoqi_for_webots.o naoproxy.o -L“/usr/local/webots/lib”-lController -L“/home/alex/naoqi-sdk-1.10.44-linux/lib” -lnaoqiclient /usr/bin/ld: 跳过不兼容 /home/vor73x/naoqi-sdk-1.10.44-linux/lib/libnaoqiclient.so 搜索 -lnaoqiclient 时 /usr/bin/ld: 找不到 -lnaoqiclient
正在执行
文件 libnaqoqiclient.so
告诉我:
libnaoqiclient.so:ELF 32 位 LSB 共享对象,Intel 80386,版本 1 (SYSV),动态链接,未剥离
webots 中的默认项目有一个 Makefile,其中包括:
其他库: LIBRARIES=-L"$(AL_DIR)/lib" -lnaoqiclient
我已经下载并安装了 32 位版本的 webots,它与 libnaoqiclient.so 链接良好,但不会与其他 webots 库 (libController.so) 链接,再次,ld抱怨类型不兼容。
我可以使用 64 位 webots 与 32 位 aldebaran sdk 链接吗? 我可以使用 32 位 webots 与 32 位 aldebaran 链接吗? (我应该这样做,但我仍然收到错误)。 我怎样才能指定 ld (或者通过 Makefile 更好)该库是 32 位的? 或者在使用 webots 32 位的情况下,我如何指定我想要 32 位二进制文件? 我不在乎我的二进制文件是 32 位还是 64 位,我不在乎我使用的是 32 位还是 64 位版本的 webots,我想要的只是能够编译控制器。
Let me explain.
I'm using webots in combination with aldebaran SDK. My operating system is Debian Squeeze amd64. Webots (64bit) will not work with aldebaran SDK because their libraries are compiled for 32bit. I do not have the source of the libs to recompile in 64bit.
While trying to compile the default nao controller under webots, i get the following error:
g++ -o naoqi_for_webots
naoqi_for_webots.o naoproxy.o
-L"/usr/local/webots/lib" -lController -L"/home/alex/naoqi-sdk-1.10.44-linux/lib"
-lnaoqiclient /usr/bin/ld: skipping incompatible
/home/vor73x/naoqi-sdk-1.10.44-linux/lib/libnaoqiclient.so
when searching for -lnaoqiclient
/usr/bin/ld: cannot find -lnaoqiclient
doing a
file libnaqoqiclient.so
tells me:
libnaoqiclient.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped
The default project in webots has a Makefile which among other things has:
additional libraries:
LIBRARIES=-L"$(AL_DIR)/lib" -lnaoqiclient
I have downloaded and installed the 32bit version of webots, which links fine with the libnaoqiclient.so but will not link with other webots libraries (libController.so) where again, ld complains about incompatible type.
Can I link using webots 64bit with the 32bit aldebaran sdk ?
Can I link using webots 32bit with the 32bit aldebaran ? (I should, but I still get errors).
How can I specify to ld (or through Makefile even better) that the library is 32bits ?
Or in the case of using webots 32bit how can I specify that I want a 32bit binary ?
I do not care if my binary is 32 or 64bit, I do not care if I use the 32 or 64bit version of webots, all I want is to be able to compile the controllers.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
嗯,您不能混合和匹配 32 位和 64 位代码。如果您使用
-m32
编译所有代码(使其构建为 32 位),您也许能够让您的应用程序链接如果您有 32 位所有可用库的版本。Well, you can't mix and match 32-bit and 64-bit code. If you compile all your code using
-m32
(to make it build as 32-bit), you may be able to get your application to link if you have 32-bit versions of all your libraries available.