linux 64位下与32位库链接

发布于 2024-11-18 20:15:07 字数 1373 浏览 3 评论 0原文

让我解释一下。 我将 webbotsaldebaran 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半窗疏影 2024-11-25 20:15:07

嗯,您不能混合和匹配 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文