编译和使用lapack-3.8.0

2018-04-21  本文已影响0人  不想当社畜

使用lapack中遇到的问题

一. 编译lapack-3.8.0

使用cmake-gui编译程序,当需要使用c和c++接口时,需要在cmake中打开使用c和c++接口的操作。随后生成makefile文件。(在执行cmake时,默认是使用动态链接库的方式编译库文件)执行:

# make (编译库)
# make install (将编译好的链接库进行安装 默认默认是安装在/usr/local/lib64 可以指定安装的路径) 

二. 使用官网的c++例子程序

  1. 使用官网提示的简单的例子编译(c++的程序)
# g++ m.cc -llapacke (后面表示使用c接口的链接库 具体-l参数什么命令也不太清楚)

能生成可执行文件 ./a.out 当执行可执行文件时,提示有错误
使用动态链接库(程序运行时,去找链接库)编译程序 运行程序发现有错误
错误如下:

error while loading shared libraries:.... (表示找不到链接库)

原因分析: 链接器ld提示找不到库文件。由于ld默认的目录是/lib和/usr/lib,当如果链接放在其他路径时,需要提前让ld知道库文件所在的路径。

  1. 解决方法:

方法1.

# vim /etc/ld.so.conf //在新的一行中加入库文件所在的路径(/usr/local/lib64)
#ldconfig  //更新/etc/ld.so.cache文件

方法2.

1.将用户的库文件统一放到一个文件目录下,eg /usr/local/lib64

2.向库配置文件中,写一个用户库文件所在的目录
# sudo vim /etc/ld.so.conf.d/usr-libs.conf (usr-libs.conf 这个文件时新建的 )
在文件中加入用户库文件多在的路径
# ldconfig   //更新/etc/ld.so.cache文件

由于我使用第二种方法,存在的问题是,当我电脑关机后,需要重新更新文件,即执行:

# ldconfig

三 认识

主要是对c++链接过程中当需要链接库时,编译的执行步骤不熟悉,需要更进一步的学习和了解。

上一篇下一篇

猜你喜欢

热点阅读