Valgrind交叉編譯

Valgrind交叉編譯
編譯環境:ubuntu16.04 x64
開發平臺:hisi3535 arm板
1.下載Valgrind
我下載的版本爲valgrind-3.12.0.tar.bz2
所有版本=>官網下載地址:http://valgrind.org/downloads/old.html
2.交叉編譯Valgrind(三步走)
   1)配置configure
         ./configure CC=arm-hisiv200-linux-gcc CXX=arm-hisiv200-linux-g++ AR=arm-hisiv200-linux-ar --host=arm-linux --prefix=/opt/valgrind-3.12.0(給不會交叉編譯的解釋下,CC爲交叉編譯鏈hisi3535,gcc編譯器,CXX爲g++,都是海思SDK帶的)
          在檢查腳本的時候可能彈出 error: Unsupported host architecture.Sorry如下圖所示錯誤
          
          解決方法:打開configure腳本,找到armv7*字段(如下圖所示)改寫爲armv7* |arm或者將--host=arm-linux改爲--host=armv7-linux
    2)make
    3)make install
3.移植開發板
      1) 在移植到開發板上的時候出現“valgrind: failed to start tool 'memcheck' for platform 'arm-linux': No such file or directory”,如下圖所示
             
      2) 需要注意的一點,網上很多教程都說要注意--prefix後面的安裝目錄要和開發板平臺目錄一致,比如說我現在在ubuntu x64編譯,安裝到/opt/valgrind-3.12.0目錄,那麼我們將整個valgrind-3.12.0目錄拷貝到開發板,那麼必須拷貝到開發板的/opt目錄下,可能有的的確問題解決了。但是其實本質上的問題是執行valgrind時,沒有找到valgrind的lib庫!!!
        
        
      解決方案:可以看到lib下面還有一層目錄valgrind,這時候我們在開發板/etc/profile文件中添加一行
       export VALGRIND_LIB=/opt/valgrind-3.12.0/lib/valgrind
      當然我們還可以在PATH="/usr/bin:/usr/sbin:/bin:/sbin:/app/bin:/opt/valgrind-3.12.0/bin",黑色爲一些系統路徑配置(根據你自己profile裏面PATH路徑),添加後面紅色部分就行了,執行下source /etc/profile ,就可以當valgrind命令使用了
         執行下valgrind --tool=memcheck --leak-check=full ./Tscu 
            
           本來以爲在Hi3535上面可以使用了,其實看到上圖的錯誤可以看到,出現一個錯誤碼,最後定位是由於我們使用的Hi3535 是armv5(由海思提供 兩套一個是armv5一個是armv7,但是我們使用的是armv5),而valgrind最低硬件要求就是armv7和VFP,所以出現如上圖所示錯誤,其它編譯步驟和移植沒有問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章