使用lapack中遇到的问题
一. 编译lapack-3.8.0
使用cmake-gui编译程序,当需要使用c和c++接口时,需要在cmake中打开使用c和c++接口的操作。随后生成makefile文件。(在执行cmake时,默认是使用动态链接库的方式编译库文件)执行:
# make (编译库)
# make install (将编译好的链接库进行安装 默认默认是安装在/usr/local/lib64 可以指定安装的路径)
二. 使用官网的c++例子程序
- 使用官网提示的简单的例子编译(c++的程序)
# g++ m.cc -llapacke (后面表示使用c接口的链接库 具体-l参数什么命令也不太清楚)
能生成可执行文件 ./a.out 当执行可执行文件时,提示有错误
使用动态链接库(程序运行时,去找链接库)编译程序 运行程序发现有错误
错误如下:
error while loading shared libraries:.... (表示找不到链接库)
原因分析: 链接器ld提示找不到库文件。由于ld默认的目录是/lib和/usr/lib,当如果链接放在其他路径时,需要提前让ld知道库文件所在的路径。
- 解决方法:
方法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++链接过程中当需要链接库时,编译的执行步骤不熟悉,需要更进一步的学习和了解。
网友评论