当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 【解决】 ubuntu下使用CLAPACK-3.2.1
帖子发表于 : 2010-10-13 21:21 

注册: 2010-10-07 14:03
帖子: 18
送出感谢: 0 次
接收感谢: 0 次
本人在 CLAPACK-3.2.1 目录下直接 make,没有错误输出,且生成了 lapack_LINUX.a,blas_LINUX.a,tmglib_LINUX.a 和 F2CLIBS/libf2c.a 四个 *.a 文件。然后我进行了如下操作:
cp lapack_LINUX.a liblapack_LINUX.a
cp blas_LINUX.a libblas_LINUX.a
ranlib libblas_LINUX.a
ranlib liblapack_LINUX.a

cd F2CLIBS/
cp libf2c.a liblibf2c.a
ranlib liblibf2c.a

cp liblibf2c.a ../

最后我将 http://www.netlib.org/clapack/faq.html#1.5 给出的例子程序存为test.c且置于CLAPACK-3.2.1 目录下,然后用以下命令编译连接:
gcc -Wall -o test test.c -L. -I./INCLUDE/ -lblas_LINUX -llapack_LINUX -llibf2c -lm
此时得到了不少错误报告,部分如下:
./liblapack_LINUX.a(dgesvd.o): In function `dgesvd_':
dgesvd.c:(.text+0x3cf8): undefined reference to `f2c_dgemm'
dgesvd.c:(.text+0x40f7): undefined reference to `f2c_dgemm'
dgesvd.c:(.text+0x5327): undefined reference to `f2c_dgemm'
dgesvd.c:(.text+0x57d0): undefined reference to `f2c_dgemm'
dgesvd.c:(.text+0x6ab2): undefined reference to `f2c_dgemm'
./liblapack_LINUX.a(dgesvd.o):dgesvd.c:(.text+0x6df9): more undefined references to `f2c_dgemm' follow
./liblapack_LINUX.a(dbdsqr.o): In function `dbdsqr_':
dbdsqr.c:(.text+0x66c): undefined reference to `f2c_dscal'
dbdsqr.c:(.text+0x762): undefined reference to `f2c_dswap'
dbdsqr.c:(.text+0x7b6): undefined reference to `f2c_dswap'
dbdsqr.c:(.text+0x800): undefined reference to `f2c_dswap'
dbdsqr.c:(.text+0xdab): undefined reference to `f2c_drot'
dbdsqr.c:(.text+0xe13): undefined reference to `f2c_drot'
dbdsqr.c:(.text+0xe75): undefined reference to `f2c_drot'
./liblapack_LINUX.a(dlasq1.o): In function `dlasq1_':
dlasq1.c:(.text+0x1ec): undefined reference to `f2c_dcopy'
dlasq1.c:(.text+0x220): undefined reference to `f2c_dcopy'
./liblapack_LINUX.a(dgebrd.o): In function `dgebrd_':
dgebrd.c:(.text+0x403): undefined reference to `f2c_dgemm'

这似乎是因为未成功连接libf2c库造成的,但我在gcc命令中确实包含了啊,即-llibf2c。这是为什么呢?大家有什么想法吗?

另外,gcc命令中写库的顺序还有讲究呢?把 -llibf2c 往前挪似乎有更多的错误提示啊。

dehiker


_________________
"Let life be beautiful like summer flower"

dehiker


最后由 dehiker 编辑于 2010-10-21 16:14,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: ubuntu下使用CLAPACK-3.2.1
帖子发表于 : 2010-10-21 15:34 

注册: 2010-10-07 14:03
帖子: 18
送出感谢: 0 次
接收感谢: 0 次
在多人指点下,终于搞定这个了,原来是连接库的调用顺序问题!

引用:
lapack needs symbols from blas (but not vice versa), therefore blas should
appear after lapack so that the linker knows which symbols are required.


因此,如下编译应该就OK啦:

代码:
gcc -Wall -o test2 test.c -I./INCLUDE -L. -llapack_LINUX -lblas_LINUX -llibf2c -lm


谢谢关注啊~~

dehiker


_________________
"Let life be beautiful like summer flower"

dehiker


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 【解决】 ubuntu下使用CLAPACK-3.2.1
帖子发表于 : 2011-08-31 22:39 

注册: 2009-09-24 23:47
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
你好 请问一下我把-lf2c加上去的时候,编译的时候又出现另外一种错误

pmvs2.o: In function `main':
pmvs2.cc:(.text+0x30): multiple definition of `main'
/home/liu/Downloads/clapack-c/libf2c.a(main.o):(.text+0x0): first defined here
/home/liu/Downloads/clapack-c/libf2c.a(main.o): In function `main':
(.text+0xad): undefined reference to `MAIN__'
collect2: ld returned 1 exit status
make: *** [pmvs2] Error 1

这个的意思是说在f2c已经定义了一个main 然后万自己打pmvs2.cc也有一个main函数

这种冲突怎么解决 如果 你知道请告诉我 或者发email给我也行

23902715@qq.com 不胜感激


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译