讓我解釋一下。 我使用webots結合aldebaran SDK。我的操作系統是Debian Squeeze amd64。 Webots(64位)不能與aldebaran SDK一起工作,因爲它們的庫是爲32位編譯的。我沒有在64位重新編譯庫的來源。 雖然試圖編譯下webots默認NAO控制器,我得到以下錯誤:在linux 64位下與32位庫鏈接
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
做
file libnaqoqiclient.so
告訴我:
libnaoqiclient.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped
在webots默認的項目有一個Makefile,其中包括:
additional libraries: LIBRARIES=-L"$(AL_DIR)/lib" -lnaoqiclient
我已經下載並安裝了32位版本的webots,它與libnaoqiclient.so很好地鏈接,但不會與其他網絡庫(libController.so)鏈接,在這裏ld再次抱怨不兼容的類型。
我可以使用64bit網絡與32bit aldebaran sdk鏈接嗎? 我可以使用32位aldebaran的32位網絡連接嗎? (我應該,但我仍然有錯誤)。 如何指定ld(或通過Makefile更好)庫是32位? 或者在使用32位網絡的情況下,我如何指定我想要一個32位二進制文件? 我不在乎如果我的二進制文件是32位或64位,我不在乎如果我使用32位或64位版本的網絡,我只想要編譯控制器。