【问题标题】:Linking with 32bit libraries under linux 64bit在 linux 64bit 下与 32bit 库链接
【发布时间】:2023-04-03 23:57:01
【问题描述】:

让我解释一下。 我将webotsaldebaran 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),动态链接,未剥离

webbots 中的默认项目有一个 Makefile,其中包括:

其他库: LIBRARIES=-L"$(AL_DIR)/lib" -lnaoqiclient

我已经下载并安装了 32 位版本的 webbots,它与 libnaoqiclient.so 链接良好,但无法与其他 webbots 库 (libController.so) 链接,再次,ld 抱怨类型不兼容。

我可以使用 64 位的 webots 与 32 位的 aldebaran sdk 链接吗? 我可以使用 32bit 的 webots 与 32bit aldebaran 链接吗? (我应该,但我仍然得到错误)。 如何指定 ld (或通过 Makefile 更好)该库是 32bits ? 或者在使用 32 位 webbots 的情况下,我如何指定我想要一个 32 位二进制文​​件? 我不在乎我的二进制文件是 32 位还是 64 位,我不在乎我使用的是 32 位还是 64 位版本的 webbot,我只想能够编译控制器。

【问题讨论】:

    标签: linux static-linking


    【解决方案1】:

    嗯,你不能混合和匹配 32 位和 64 位代码。如果您使用 -m32 编译所有代码(使其构建为 32 位),您可能能够让您的应用程序链接 如果您拥有所有可用库的 32 位版本.

    【讨论】:

      猜你喜欢
      • 2010-11-12
      • 2016-08-19
      • 2015-06-10
      • 1970-01-01
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      • 2012-01-16
      • 2011-06-06
      相关资源
      最近更新 更多