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了,就很難受