原创 error loading share libraries : libimf.so

2010-3-25 16:03 5196 5 5 分类: 软件与OS

最近,在测试一款软件, 目标环境是suse linux,软件是由fortan完成,只给了测试版软件,解压后运行,提示错误如下:


error while loading libries: libimf.so, cannot open shared object file


是缺少fortan的库支持,在intel网站下载的非商业版应用,


解压: tar xzvf  l_cprof_p_11.1.069.tgz


安装: ./install.sh


安装过程中需要填写下载时提供的序列号XXX-XXXXXX格式。


安装后,文件位于/opt/intel/Compiler/11.1/069目录下。


然后,添加bin目录到PATH,并添加lib到LD_LIBRARY_PATH,


另一种办法是修改/etc/profile与/etc/ld.so.conf两个文件。


修改后, ifort编译命令也可以使用了, 检测方式: ifort -help


 


同时了解一下linux的动态库的搜索机制:


在Linux 中,动态库的搜索路径除了默认的搜索路径外,还可通过三种方法来指定:


方法一:在配置文件/etc/ld.so.conf中指定动态库搜索路径;方法二:通过环境变量LD_LIBRARY_PATH指定动态库搜索路径;方法三:在编译目标代码时指定该程序的动态库搜索路径。


众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库,并且该动 态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函数,以及该动态库的其它资源了。在Linux 中,动态库的搜索路径除了默认的搜索路径外,还可以通过以下三种方法来指定。



方法一:在配置文件/etc/ld.so.conf中指定动态库搜索路径。


可以通过编辑配置文件/etc/ld.so.conf来指定动态库的搜索路径,该文件中每行为一个动态库搜索路径。每次编辑完该文件后,都必须运行命令ldconfig使修改后的配置生效。


方法二:通过环境变量LD_LIBRARY_PATH指定动态库搜索路径。


通过设定环境变量LD_LIBRARY_PATH也可以指定动态库搜索路径。当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔。


方法三:在编译目标代码时指定该程序的动态库搜索路径。


还可以在编译目标代码时指定程序的动态库搜索路径。这是通过gcc 的参数"-Wl,-rpath,"指定(如例3所示)。当指定多个动态库搜索路径时,路径之间用冒号":"分隔。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条