zoukankan      html  css  js  c++  java
  • 解决 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中以便运行时能找到。

    然后运行成功

  • 相关阅读:
    【洛谷5052】[COCI2017-2018#7] Go(区间DP)
    【洛谷6564】[POI2007] 堆积木KLO(树状数组优化DP)
    【洛谷6940】[ICPC2017 WF] Visual Python++(扫描线)
    【洛谷6939】[ICPC2017 WF] Tarot Sham Boast(PGF结论题)
    【洛谷4123】[CQOI2016] 不同的最小割(最小割树)
    初学最小割树
    【洛谷6122】[NEERC2016] Mole Tunnels(模拟费用流)
    【洛谷6936】[ICPC2017 WF] Scenery(思维)
    【洛谷2805】[NOI2009] 植物大战僵尸(最大权闭合子图)
    【洛谷1393】Mivik 的标题(容斥+border性质)
  • 原文地址:https://www.cnblogs.com/zealousness/p/9578615.html
Copyright © 2011-2022 走看看