首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用GCC编写PARDISO线性求解器测试用例

用GCC编写PARDISO线性求解器测试用例
EN

Stack Overflow用户
提问于 2009-08-07 03:26:14
回答 2查看 1.8K关注 0票数 2

我正在尝试用帕迪索编译一个线性系统求解器。测试用例(pardiso_sym.c)也是从上面的同一个网站下载的。

目录中有以下文件:

代码语言:javascript
复制
[gv@emerald my-pardiso]$ ls -lh
total 1.3M
-rw-r--r-- 1 gv hgc0746 1.3M Aug  7 11:59 libpardiso_GNU_IA64.so
-rw-r--r-- 1 gv hgc0746 7.2K Nov 13  2007 pardiso_sym.c

然后,我尝试使用以下命令编译它:

代码语言:javascript
复制
[gv@emerald my-pardiso]$ gcc pardiso_sym.c -o pardiso_sym -L . -llibpardiso_GNU_IA64.so -L/home/gv/.boost/include/boost-1_38 -llapack

但是它给出了这样的错误:

代码语言:javascript
复制
/usr/local/lib/gcc/x86_64-unknown-linux-gnu/4.3.2/../../../../x86_64-unknown-linux-gnu/bin/ld:
cannot find -llibpardiso_GNU_IA64.so
collect2: ld returned 1 exit status

我的编译方法怎么了?

这是我的系统的附加信息:

代码语言:javascript
复制
[gv@emerald my-pardiso]$ uname -a
Linux gw05 2.6.18-92.1.13.el5 #1 SMP Wed Sep 24 19:32:05 EDT 2008
x86_64 x86_64 x86_64 GNU/Linux

[gv@emerald my-pardiso]$ gcc --version
gcc (GCC) 4.3.2

更新

根据戴夫·甘布尔的建议,图书馆得到了认可。但现在它给出了不同的错误:

代码语言:javascript
复制
$ gcc pardiso_sym.c -o pardiso_sym -L . -lpardiso_GNU_IA64 -L/home/gv/.boost/include/boost-1_38 -llapack
./libpardiso_GNU_IA64.so: undefined reference to `s_stop'
./libpardiso_GNU_IA64.so: undefined reference to `s_wsfe'
./libpardiso_GNU_IA64.so: undefined reference to `e_wsfe'
./libpardiso_GNU_IA64.so: undefined reference to `z_abs'
./libpardiso_GNU_IA64.so: undefined reference to `s_cat'
./libpardiso_GNU_IA64.so: undefined reference to `s_copy'
./libpardiso_GNU_IA64.so: undefined reference to `do_fio'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-07 03:30:10

编辑:我看了pardiso手册。以下是解决办法:

代码语言:javascript
复制
gcc pardiso_sym.c -o pardiso_sym -L . -lpardiso_GNU_IA64 -L/home/gv/.boost/include/boost-1_38 -llapack

在这里,我从一开始就删除了"lib“,从-lpardiso_GNU_IA64的末尾删除了”-lpardiso_GNU_IA64“

票数 4
EN

Stack Overflow用户

发布于 2009-08-07 03:57:34

编辑:对于新的错误,您将需要-lg2c之后的-lapack (fortran兼容性库)

EDIT2:还添加了-lgfortran和其他您可能需要的东西。在谷歌上搜索一个缺失的符号时,通常会发现它所包含的图书馆。一个接一个地添加库,直到满足所有依赖关系为止。

所以在你的例子中,例程是这样的:

链接错误-从g2c获得未解决的符号

添加了g2c --从gfortran获得符号

添加了gfortran --得到一些其他的符号,查找它们,然后一个一个地添加libs。

Libray order很重要,例如,如果在lapak之前包含了g2c,那么链接器会在它知道lapak需要它的所有符号之前扔掉它们(MS做了2次传递来修复这些符号)。因此,如果您看到库中已经包含了一个丢失的符号,请查看哪个库需要它,并将这个库与后面的符号一起移动。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1242742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档