在cygwin下与LAPACK链接错误
Linking error with LAPACK under cygwin
与这个问题中描述的问题类似,我想在Windows 8.1下使用LAPACK,使用cygwin(并用NetBeans编写)编译一个C++程序。我在cygwin中获得了必要的软件包(lapack,liblapack-devel,liblapack0),并编写了一个函数原型:
extern "C" void dgeev_(char* jobvl, char* jobvr, int* n, double* a,
int* lda, double* wr, double* wi, double* vl, int* ldvl,
double* vr, int* ldvr, double* work, int* lwork, int* info);
但是尝试编译仍然会从链接器抛出错误:
$ g++ -llapack -lblas main.cpp
/tmp/cc3opfN5.o:main.cpp:(.text+0x349): undefined reference to `dgeev_'
/tmp/cc3opfN5.o:main.cpp:(.text+0x403): undefined reference to `dgeev_'
collect2: error: ld returned 1 exit status
代码如下所示(改编自此示例):
/* Locals */
int n = N, lda = LDA, ldvl = LDVL, ldvr = LDVR, info, lwork;
double wkopt;
double* work;
double h = k_max / N;
/* Local arrays */
double wr[N], wi[N], vl[LDVL * N], vr[LDVR * N];
double a[LDA * N];
/* Initialize matrix */
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
a[i * N + j] = integral(i + 1, j + 1);
if (i == j) {
a[i * N + j] += diagonal((i + 1) * h);
}
}
}
/* Executable statements */
printf(" DGEEV Example Program Resultsn");
/* Query and allocate the optimal workspace */
lwork = -1;
char vec[] = "Vectors";
dgeev_(vec, vec, &n, a, &lda, wr, wi, vl, &ldvl, vr, &ldvr,
&wkopt, &lwork, &info);
lwork = (int) wkopt;
work = (double*) malloc(lwork * sizeof (double));
/* Solve eigenproblem */
dgeev_(vec, vec, &n, a, &lda, wr, wi, vl, &ldvl, vr, &ldvr,
work, &lwork, &info);
我错过了什么? :-/
假设您已经正确安装了BLAS
和LAPACK
库,并且系统可以找到它们,那么您只需要更改编译命令中的顺序即可。
$ g++ main.cpp -llapack -lblas
编译器应该知道main.cpp
的哪些函数应该在声明库之前查看它们。
相关文章:
- 静态数据成员的问题-修复链接错误会导致编译器错误
- Visual Studio mkl_link_tool.exe链接错误
- C++ 实现模板单例类时出现链接错误
- 使用类模板的方法链接错误
- MySQL C++连接器链接错误
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- 运行 C++ 单元测试时LNK2005链接错误
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 链接错误,包括我创建的相同头文件 - C++
- 在Embarcadero C++ Builder中生成的DLL未解决的外部链接错误
- 使用标头保护的多个定义链接错误
- 链接错误:未定义对 stdscr 和 wgetch 的引用
- 使用 Vivek 的 Vcam / 捕获源过滤器构建/链接错误
- 升压program_options中的链接错误
- 使用 g++ 预处理器进行替换会导致链接错误
- 在调试配置中编译工作正常,但发布会给出链接错误
- 相邻矩阵设置链接错误
- 包含常量变量并包含在多个文件中的标头的链接错误
- C++链接错误,我理解但无法解决
- 是什么导致macOS Mojave上的GoogleTest链接错误