[移植"myslam"到zynq上的arm手記] 3 - hello world

1. hello worldlinux

沒毛病,在arm上成功運行c++

 

2. useEigenubuntu

第一次報錯:bash

./eigenMatrix: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./eigenMatrix)
./eigenMatrix: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./eigenMatrix)

板子上的系統裏的libstdc++.so.6太老了,到xilinx的那坨里頭找,而後替換架構

注意是armhf架構,找gnueabihfui

找到路徑是 /media/albireo/backup/opt/Xilinx/SDK/2017.1/gnu/aarch32/lin/gcc-arm-linux-gnueabi/arm-linux-gnueabihf/lib/libstdc++.so.6spa

看到link target: libstdc++.so.6.0.22code

把 libstdc++.so.6.0.22 擼到板子上component

 

cp libstdc++.so.6.0.22 /usr/lib/arm-linux-gnueabihf/libstdc++.so.6.0.22
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.22 libstdc++.so.6

 

 

再次嘗試,第二次報錯blog

./eigenMatrix: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.18' not found (required by /usr/lib/arm-linux-gnueabihf/libstdc++.so.6)
./eigenMatrix: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.17' not found (required by /usr/lib/arm-linux-gnueabihf/libstdc++.so.6)

一樣的操做

結果發現炸了,libc好像太底層了, rm掉libc.so.6以後,ln等基礎的命令都沒法使用了(固然,這時候若是關機的話就無法啓動了,雖然也並無什麼事情

由於問題出在沒了libc.so.6,找不到庫了,直接用LD_PRELOAD指定使用libc-2.15.so,連接上

LD_PRELOAD=libc-2.15.so ln -s libc-2.22.so libc.so.6

 連接上libc-2.22.so以後發現仍是不行,僅僅libc-2.15.so換掉並不行,還會報其餘的庫的錯,嘗試依次替換,沒有什麼卵用。把2.15的從新連接回去,放棄這種搞法。

 

嘗試其餘辦法。報錯緣由是編譯用的xilinx給的交叉編譯器和板子上的arm-linux-gnueabihf不同(首先版本就不同,其餘還有啥區別就不知道了),應該弄成同樣就好了

去linardo那找他們提供的最新的filesystem以及對應的編譯器,分別是15.06和4.8,選擇gnueabihf

http://releases.linaro.org/archive/15.06/ubuntu/vivid-images/gnome/

http://releases.linaro.org/archive/15.06/components/toolchain/binaries/4.8/armeb-linux-gnueabihf/

下載一看,裏面的各類so的版本真的都是同樣耶(廢話

文件系統弄到sd卡上,把xilinx的交叉編譯器扔掉,換成新的,加入環境變量

export PATH=/home/albireo/lib/gcc-linaro-4.8-2015.06-x86_64_arm-linux-gnueabihf/bin:$PATH

 從新編譯hello world和useEigen,擼到板子上,運行經過。就很舒服

 

然而板子上裝的新系統不知道爲啥連不上network了,就很難受

相關文章
相關標籤/搜索