在linux 64bit下与32位库连接

时间:2011-07-07 03:06:15

标签: linux static-linking

让我解释一下。 我将webotsaldebaran SDK结合使用。我的操作系统是Debian Squeeze amd64。 Webots(64位)不能与aldebaran SDK一起使用,因为它们的库是针对32位编译的。我没有在64位重新编译的libs的源代码。 在尝试在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位网页与32位aldebaran sdk进行链接吗? 我可以使用32位aldebaran网站进行链接吗? (我应该,但我仍然有错误)。 如何指定ld(或通过Makefile甚至更好)库是32位? 或者在使用32位webbit的情况下如何指定我想要32位二进制文​​件? 我不在乎我的二进制文件是32位还是64位,我不在乎我是否使用32位或64位版本的webots,我只想能够编译控制器。

1 个答案:

答案 0 :(得分:2)

好吧,你不能混用和匹配32位和64位代码。如果使用-m32编译所有代码(使其构建为32位),您可以让应用程序链接如果您拥有32位版本的所有代码图书馆。