Ubuntu下如何编译OpenBLAS
2016-08-01 16:38
274 查看
1.下载源码压缩包(v0.2.18.zip):http://www.openblas.net/
2.编译
执行命令:make
默认编译的是支持多线程、无fortran库支持的。
如果需要编译单线程版、支持fortran库,执行命令:makeFC=gfortran USE_THREAD=0
(如未安装gfortran,执行命令“sudoapt-get install gfortran”进行安装)
3.安装
执行命令:makeinstall PREFIX=/home/yanghao/project/OpenBLASd_lib
PREFIX后面跟着的是lib文件导出目录,该目录将在使用该库的工程中引用。
4.建立连接
为了保证链接正确,需手动建立.a/.so文件的链接(其实安装后默认自动建立过了,这里也是为了导出到系统lib库中,因为gdb调试时需要系统lib库中存在本库文件)。这里仅介绍.so文件链接建立。
执行命令:
sudomkdir /usr/lib/OpenBLAS #在系统lib库中建立单独的目录
sudoln -s -f/home/yanghao/project/OpenBLASd_lib/lib/libopenblas_haswell-r0.2.18.so/home/yanghao/project/OpenBLASd_lib/lib/libopenblas.so
sudoln -s -f/home/yanghao/project/OpenBLASd_lib/lib/libopenblas_haswell-r0.2.18.so/home/yanghao/project/OpenBLASd_lib/lib/libopenblas.so.0
sudocp/home/yanghao/project/OpenBLASd_lib/lib/libopenblas_haswell-r0.2.18.so/usr/lib/OpenBLAS #拷贝到系统lib库中
sudoln -s -f /usr/lib/OpenBLAS/libopenblas_haswell-r0.2.18.so/usr/lib/OpenBLAS/libopenblas.so
sudoln -s -f /usr/lib/OpenBLAS/libopenblas_haswell-r0.2.18.so/usr/lib/OpenBLAS/libopenblas.so.0
sudogedit /etc/ld.so.conf.d/OpenBLAS.conf #create OpenBLAS.conf
sudoecho /usr/lib/OpenBLAS>/etc/ld.so.conf.d/OpenBLAS.conf #addcontent
sudoldconfig #刷新系统库缓存
注:
如何编译可以使用gdb调试的库?
编译选项中增加”-g-DDEBUG”即可。对于OpenBLAS,在Makefile.system中增加以下内容即可:
DEBUG=1#用于打开调试开关,在该文件已经存在了-g选项,只不过是通过本DEBUG开关进行控制是否生效的
ifeq($(DEBUG), 1)
EXTRALIB+= -DDEBUG
endif
这样编译生成的so库就包含了调试用的符号表等信息。通过gdb调试程序时,将断点设置一个位于.so中的库函数上,运行到该函数时,就可以直接进入该函数进行单步跟踪了(否则将无法进入该函数,gdb会直接跳过)。
2.编译
执行命令:make
默认编译的是支持多线程、无fortran库支持的。
如果需要编译单线程版、支持fortran库,执行命令:makeFC=gfortran USE_THREAD=0
(如未安装gfortran,执行命令“sudoapt-get install gfortran”进行安装)
3.安装
执行命令:makeinstall PREFIX=/home/yanghao/project/OpenBLASd_lib
PREFIX后面跟着的是lib文件导出目录,该目录将在使用该库的工程中引用。
4.建立连接
为了保证链接正确,需手动建立.a/.so文件的链接(其实安装后默认自动建立过了,这里也是为了导出到系统lib库中,因为gdb调试时需要系统lib库中存在本库文件)。这里仅介绍.so文件链接建立。
执行命令:
sudomkdir /usr/lib/OpenBLAS #在系统lib库中建立单独的目录
sudoln -s -f/home/yanghao/project/OpenBLASd_lib/lib/libopenblas_haswell-r0.2.18.so/home/yanghao/project/OpenBLASd_lib/lib/libopenblas.so
sudoln -s -f/home/yanghao/project/OpenBLASd_lib/lib/libopenblas_haswell-r0.2.18.so/home/yanghao/project/OpenBLASd_lib/lib/libopenblas.so.0
sudocp/home/yanghao/project/OpenBLASd_lib/lib/libopenblas_haswell-r0.2.18.so/usr/lib/OpenBLAS #拷贝到系统lib库中
sudoln -s -f /usr/lib/OpenBLAS/libopenblas_haswell-r0.2.18.so/usr/lib/OpenBLAS/libopenblas.so
sudoln -s -f /usr/lib/OpenBLAS/libopenblas_haswell-r0.2.18.so/usr/lib/OpenBLAS/libopenblas.so.0
sudogedit /etc/ld.so.conf.d/OpenBLAS.conf #create OpenBLAS.conf
sudoecho /usr/lib/OpenBLAS>/etc/ld.so.conf.d/OpenBLAS.conf #addcontent
sudoldconfig #刷新系统库缓存
注:
如何编译可以使用gdb调试的库?
编译选项中增加”-g-DDEBUG”即可。对于OpenBLAS,在Makefile.system中增加以下内容即可:
DEBUG=1#用于打开调试开关,在该文件已经存在了-g选项,只不过是通过本DEBUG开关进行控制是否生效的
ifeq($(DEBUG), 1)
EXTRALIB+= -DDEBUG
endif
这样编译生成的so库就包含了调试用的符号表等信息。通过gdb调试程序时,将断点设置一个位于.so中的库函数上,运行到该函数时,就可以直接进入该函数进行单步跟踪了(否则将无法进入该函数,gdb会直接跳过)。
相关文章推荐
- Ubuntu16:cmake生成Makefile编译caffe过程(OpenBLAS/CPU+GPU)塈解决nvcc warning:The 'compute_20', 'sm_20'
- Ubuntu16:cmake生成Makefile编译caffe过程(OpenBLAS/CPU+GPU)塈解决nvcc warning:The 'compute_20', 'sm_20'
- [转]如何在ubuntu下编译内核
- 如何编译一个内核 - Ubuntu方式
- 如何编译一个操作系统内核-Ubuntu方式
- 【指导]如何编译完整建立开发环境和编译Android 4.0.1 on Ubuntu 11.04 (64 bit)
- 如何在ubuntu 下编译vim73?
- 如何编译openh323
- 如何搭建android的开发环境 虚拟机和ubuntu的安装与建立编译条件
- 如何在ubuntu10.04环境下编译android
- [转的]如何打开opencore/openmax里的log及如何编译opencore时显示命令
- Linux(centos/fedora/redhat/ubuntu....)下如何安装rpm,deb文件,如何解压,编译,安装*.tar.gz文件
- 如何编译一个内核 - Ubuntu方式(转)
- 如何编译一个内核 - Ubuntu方式
- 如何在Ubuntu编译Linux内核
- 如何在ubuntu10.04环境下编译android
- 如何编译升级ubuntu内核
- ubuntu 9.04下open函数编译不过的解决办法
- 如何配置Ubuntu编译环境
- Android ROM研究---如何在ubuntu下下载姜饼(Gingerbread)源代码并编译android ROM