解決 free(): invalid pointer: 0x00000000019ff700 運行時報錯(caffe)(libtool使用)


編譯成功,運行時報錯:

在使用 pytorch or tensorflow or caffe 時,都可能存在這個問題:

*** Error in `xxx': free(): invalid pointer: 0x00000000020663b0 ***

很可能是缺少libtcmalloc庫

 

 

 

解決方法1:

apt-get安裝libtcmalloc
sudo apt-get install libtcmalloc

然后打開~/.bashrc文件
sudo gedit ~/.bashrc
在文件末尾添加如下代碼: 
export LD_PRELOAD="/usr/lib/libtcmalloc_minimal.so.4" 
最后重新載入環境變量即可 
sudo source ~/.bashrc

 

但是我在服務器上是普通user,不是管理員sudoer,所以我采用了另一種方法

 

解決方法2:(推薦,只在自己的環境里安裝,不會影響到服務器上其他人,不需要sudo權限)

github下載tcmalloc源碼:

https://github.com/yangzhengxing/tcmalloc

解壓,進入目錄

./autogen.sh

(運行autogen命令時可能會提示:

那是因為你沒有安裝autoreconf,自行解決)

./configure

make -j4

然后就完成了,這是你會發現在tcmalloc目錄中多了幾個.la文件,則就是編譯得到的結果。

關於什么是.la文件以及.la文件怎么用:

https://www.ibm.com/developerworks/cn/aix/library/1007_wuxh_libtool/

然后使用libtool工具將自己需要的庫的.la文件生成.a和.so,這里我們需要tcmalloc和profiler兩個,創建一個build文件夾存儲生成的庫

libtool --mode=install install -c libtcmalloc.la /home/zhangsuosheng/zss_output_feature_image/tcmalloc/build

libtool --mode=install install -c libprofiler.la /home/zhangsuosheng/zss_output_feature_image/tcmalloc/build

然后我們就進行編譯,

使用靜態庫編譯:

g++ -std=c++11 -o netapp.bin zss_featureimg.cpp  `pkg-config --libs --cflags opencv` -I ~/caffe_mpi/include/ -I ~/caffe_mpi/src/ -I ~/caffe_mpi/build/src/ -I /usr/local/cuda/include/ -L ~/caffe_mpi/build/lib/ -lprotobuf -lcaffe -lglog -lboost_system /home/zhangsuosheng/zss_output_feature_image/tcmalloc/build/libprofiler.a /home/zhangsuosheng/zss_output_feature_image/tcmalloc/build/libtcmalloc.a

 

使用動態庫編譯:

g++ -std=c++11 -o netapp.bin zss_featureimg.cpp  `pkg-config --libs --cflags opencv` -I ~/caffe_mpi/include/ -I ~/caffe_mpi/src/ -I ~/caffe_mpi/build/src/ -I /usr/local/cuda/include/ -L ~/caffe_mpi/build/lib/ -L ~/zss_output_feature_image/tcmalloc/build/ -lprotobuf -lcaffe -lglog -lboost_system -lprofiler -ltcmalloc

 

然后編譯成功

然后將這個build文件夾加到LD_LIBRARY_PATH中以便運行時能找到。

然后運行成功

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM