mxnet 中 cannot find -lcblas问题

编译出现题目中的问题后,开始以下工作:

1.确保机器上安装了gfortran编译器,如果没有安装的话,可以使用sudo apt-get install gfortran

2.下载blas, cblas, lapack 源代码, 这些源码都可以在 http://www.netlib.org 上找到,下载并解压。这里提供我安装时的下载链接 http://www.netlib.org/blas/blas.tgz http://www.netlib.org/blas/blast-forum/cblas.tgz http://www.netlib.org/lapack/lapack-3.4.2.tgz,解压之后会有三个文件夹,BLAS,CBLAS,lapack-3.4.2

3.这里就是具体的编译步骤

1)编译blas, 进入BLAS文件夹,执行以下几条命令

  1. gfortran -c  -O3 *.f  # 编译所有的 .f 文件,生成 .o文件  
  2. ar rv libblas.a *.o  # 链接所有的 .o文件,生成 .a 文件  
  3. su cp libblas.a /usr/local/lib  # 将库文件复制到系统库目录  

2)编译cblas, 进入CBLAS文件夹,首先根据你自己的计算机平台,将目录下某个 Makefile.XXX 复制为 Makefile.in , XXX表示计算机的平台,如果是Linux,那么就将Makefile.LINUX 复制为 Makefile.in,然后执行以下命令
  1. cp ../BLAS/libblas.a  testing  # 将上一步编译成功的 libblas.a 复制到 CBLAS目录下的testing子目录  
  2. make # 编译所有的目录  
  3. sudo cp lib/cblas_LINUX.a /usr/local/lib/libcblas.a # 将库文件复制到系统库目录下  

3)编译 lapack以及lapacke,这一步比较麻烦,首先当然是进入lapack-3.4.2文件夹,然后根据平台的特点,将INSTALL目录下对应的make.inc.XXX 复制一份到 lapack-3.4.2目录下,并命名为make.inc, 这里我复制的是 INSTALL/make.inc.gfortran,因为我这里用的是gfortran编译器。

修改lapack-3.4.2/Makefile, 因为lapack以来于blas库,所以需要做如下修改

#lib: lapacklib tmglib

lib: blaslib variants lapacklig tmglib

  1. make # 编译所有的lapack文件  
  2. cd lapacke # 进入lapacke 文件夹,这个文件夹包含lapack的C语言接口文件  
  3. make # 编译lapacke  
  4. cp include/*.h /usr/local/include #将lapacke的头文件复制到系统头文件目录  
  5. cd .. #返回到 lapack-3.4.2 目录  
  6. cp *.a /usr/local/lib # 将生成的所有库文件复制到系统库目录  

安装完成后编译mxnet时出现问题:

        /usr/local/lib/libcblas.a: error adding symbols: 错误的值
        collect2: error: ld returned 1 exit status
        make: *** [lib/libmxnet.so] 错误 1

       解决办法:

               进入 mxnet 文件夹,将config.mk中的USE_BLAS = atlas 改成USE_BLAS = blas   

编译通过。

   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值