Gcc 无法将c代码链接到lapack:未定义的引用

Gcc 无法将c代码链接到lapack:未定义的引用,gcc,freebsd,lapack,Gcc,Freebsd,Lapack,我试图使用C语言中的lapack函数 下面是一些测试代码,从 n、 b:我试过各种顺序的库,也试过其他库,如latlas、lcblas、lgfortran等 错误消息是: /tmp//cc8JMnRT.o: In function `invertMatrix': test.c:(.text+0x94): undefined reference to `clapack_sgetrf' test.c:(.text+0xb4): undefined reference to `clapack_sget

我试图使用C语言中的lapack函数

下面是一些测试代码,从

n、 b:我试过各种顺序的库,也试过其他库,如latlas、lcblas、lgfortran等

错误消息是:

/tmp//cc8JMnRT.o: In function `invertMatrix':
test.c:(.text+0x94): undefined reference to `clapack_sgetrf'
test.c:(.text+0xb4): undefined reference to `clapack_sgetri'
collect2: error: ld returned 1 exit status
clapack.h作为atlas的一部分提供并安装。clapack.h包含了令人不快的函数,那么如何才能找到它们呢

这些符号实际上位于使用字符串找到的库libalapack中。但是,将-lapack添加到gcc命令似乎需要添加-lcblas大量未定义的cblas_*引用。安装cblas会自动卸载atlas,从而删除clapack.h

所以,这感觉像是某种依赖地狱

我在FreeBSD 10 amd64上,所有相关的库似乎都安装在正确的路径上

非常感谢您的帮助

谢谢


Ivan

我卸载了所有远程相关的blas、cblas、lapack、atlas等,然后仅从端口重新安装了atlas,然后是lapack和blas软件包

这次,/usr/local/lib包含一个新的lib文件:libcblas.so-previous random installations肯定已经删除了它

现在编译的gcc行是:

gcc -o test test.c  \
-llapack -lblas -lalapack -lcblas

改变-l参数的顺序似乎没有什么区别。

我已经读过这个问题obvs-请注意,我链接到了它。我不认为这是一个重复的问题,另一个问题没有得到充分的回答。但是,看起来您没有尝试重复问题答案中的建议,即将-lcblas添加到您的命令行?哦,我的错,我只是更仔细地重读了你的问题,你毕竟提到了libcblas——这没用吗?。不管怎样,我现在已经撤回了我的投票。谢谢:就我而言,我今天早上做了更多的工作,在错误消息之后我添加了更多的细节。我现在只是在OS X上尝试一下,它应该离FreeBSD足够近,可以看到发生了什么…好的-在OS X上,我可以用-llapack-lblas-latlas编译它-您似乎需要-llapack for clapacksgetrf/clapacksgetri,然后您需要另外两个来解决来自liblapack的进一步依赖关系。
/tmp//cc8JMnRT.o: In function `invertMatrix':
test.c:(.text+0x94): undefined reference to `clapack_sgetrf'
test.c:(.text+0xb4): undefined reference to `clapack_sgetri'
collect2: error: ld returned 1 exit status
gcc -o test test.c  \
-llapack -lblas -lalapack -lcblas