Java 调用 Caffe_解决 free(): invalid pointer: 0x00000000019ff700 运行时报错(caffe)(libtool使用)...
編譯成功,運(yùn)行時(shí)報(bào)錯(cuò):
在使用 pytorch or tensorflow or caffe 時(shí),都可能存在這個(gè)問(wèn)題:
*** Error in `xxx': free(): invalid pointer: 0x00000000020663b0 ***
很可能是缺少libtcmalloc庫(kù)
解決方法1:
apt-get安裝libtcmalloc
sudo apt-get install libtcmalloc
然后打開~/.bashrc文件
sudo gedit ~/.bashrc
在文件末尾添加如下代碼:
export LD_PRELOAD="/usr/lib/libtcmalloc_minimal.so.4"
最后重新載入環(huán)境變量即可
sudo source ~/.bashrc
但是我在服務(wù)器上是普通user,不是管理員sudoer,所以我采用了另一種方法
解決方法2:(推薦,只在自己的環(huán)境里安裝,不會(huì)影響到服務(wù)器上其他人,不需要sudo權(quán)限)
github下載tcmalloc源碼:
https://github.com/yangzhengxing/tcmalloc
解壓,進(jìn)入目錄
./autogen.sh
(運(yùn)行autogen命令時(shí)可能會(huì)提示:
那是因?yàn)槟銢](méi)有安裝autoreconf,自行解決)
./configure
make -j4
然后就完成了,這是你會(huì)發(fā)現(xiàn)在tcmalloc目錄中多了幾個(gè).la文件,則就是編譯得到的結(jié)果。
關(guān)于什么是.la文件以及.la文件怎么用:
https://www.ibm.com/developerworks/cn/aix/library/1007_wuxh_libtool/
然后使用libtool工具將自己需要的庫(kù)的.la文件生成.a和.so,這里我們需要tcmalloc和profiler兩個(gè),創(chuàng)建一個(gè)build文件夾存儲(chǔ)生成的庫(kù)
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
然后我們就進(jìn)行編譯,
使用靜態(tài)庫(kù)編譯:
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
使用動(dòng)態(tài)庫(kù)編譯:
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
然后編譯成功
然后將這個(gè)build文件夾加到LD_LIBRARY_PATH中以便運(yùn)行時(shí)能找到。
然后運(yùn)行成功
總結(jié)
以上是生活随笔為你收集整理的Java 调用 Caffe_解决 free(): invalid pointer: 0x00000000019ff700 运行时报错(caffe)(libtool使用)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 开户行信息是指哪些
- 下一篇: java ee 上传文件_17.《Jav