3
我試圖使用64位的32位2012A Matlab來MEX C代碼的Ubuntu 12.10符號鏈接編譯使用32位庫的代碼在64位的Ubuntu 12.10
我已經下載了所有可能的庫(GCC 4.7,建立必要的,庫-32等),但是我收到以下錯誤
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.7/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.7/libstdc++.a when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.7/libgomp.so when searching for -lgomp
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.7/libgomp.a when searching for -lgomp
/usr/bin/ld: cannot find -lgomp
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.7/libgcc_s.so when searching for -lgcc_s
/usr/bin/ld: cannot find -lgcc_s
collect2: error: ld returned 1 exit status
我發現,這個問題可以通過從64位庫設置符號鏈接到32要解決位的。我試圖創建不同的鏈接,但無法完成編譯。
預先感謝您。
更新1
的gcc-multilib的失蹤了,所以以後
sudo apt-get install gcc-multilib
我收到以下錯誤
Warning: You are using gcc version "4.7.2-2ubuntu1)". The version
currently supported with MEX is "4.4.6".
For a list of currently supported compilers see:
http://www.mathworks.com/support/compilers/current_release/
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.7/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.7/libstdc++.a when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++
collect2: error: ld returned 1 exit status
我mexopts.sh看起來像
CC='gcc'
CFLAGS='-ansi -D_GNU_SOURCE'
CFLAGS="$CFLAGS -fPIC -pthread -m32"
CFLAGS="$CFLAGS -fexceptions"
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64"
CLIBS="$RPATH $MLIBS -lm"
COPTIMFLAGS='-O -DNDEBUG'
CDEBUGFLAGS='-g'
CLIBS="$CLIBS -lstdc++"
-m32在那裏,但我不確定它是否應該以這種方式寫入。 有人可以詳細說明如何編輯mexopts.sh使matlab看看32位庫嗎?看着Linking using g++ fails searching for -lstdc++
後
更新2
我試圖安裝的g ++ - multilib的
sudo apt-get install g++-multilib
現在,錯誤的格式如下:
/usr/bin/ld: i386:x86-64 architecture of input file `bin/fv_cache.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `bin/obj_func.o' is incompatible with i386 output
...
您可以通過在命令行上執行gcc(使用-m32選項?)和一些虛擬.c代碼來構建32位可執行文件嗎? – durasm 2013-02-19 21:40:43
我剛剛嘗試過 - 因爲缺少gcc 4.7-multilib,所以無法啓動。感謝您指出了這一點! – Gnattuha 2013-02-20 14:16:53