g++ -fdiagnostics-color=always -g '/thfs1/home/test653/shengjh/exam of CSRf1.cpp' -o '/thfs1/home/test653/shengjh/exam of CSRf1' -DAdd_ -DUSE_FORTRAN_UNDERSCORE -I/thfs1/software/eigen3/3.4.90-gcc9.3/include/eigen3 -I/thfs1/software/mpich/4.0.2-mpi-x-gcc9.3.0/include -I/thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/include -L/thfs1/software/mpich/4.0.2-mpi-x-gcc9.3.0/lib -L/thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/lib -L/thfs1/software/scalapack/2.2.2-gcc9.3.0-mpi-x/lib -L/thfs1/software/metis/5.1.0-gcc9.3.0/lib -L/thfs1/software/lapack/3.8.0-gcc9.3.0/lib -L/thfs1/software/blas/3.8.0-gcc9.3.0/lib -L/thfs1/software/openblas/0.3.30-gcc9.3.0/lib -Wl,--start-group -ldmumps -lmumps_common -lpord -lscalapack -lmetis -lopenblas -llapack -lgfortran -lm -Wl,--end-group -lmpi -lstdc++fsg++ -fdiagnostics-color=always -g '/thfs1/home/test653/shengjh/exam of CSRf1.cpp' -o '/thfs1/home/test653/shengjh/exam of CSRf1' -DAdd_ -DUSE_FORTRAN_UNDERSCORE -I/thfs1/software/eigen3/3.4.90-gcc9.3/include/eigen3 -I/thfs1/software/mpich/4.0.2-mpi-x-gcc9.3.0/include -I/thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/include -L/thfs1/software/mpich/4.0.2-mpi-x-gcc9.3.0/lib -L/thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/lib -L/thfs1/software/scalapack/2.2.2-gcc9.3.0-mpi-x/lib -L/thfs1/software/metis/5.1.0-gcc9.3.0/lib -L/thfs1/software/lapack/3.8.0-gcc9.3.0/lib -L/thfs1/software/blas/3.8.0-gcc9.3.0/lib -L/thfs1/software/openblas/0.3.30-gcc9.3.0/lib -Wl,--start-group -ldmumps -lmumps_common -lpord -lscalapack -lmetis -lopenblas -llapack -lgfortran -lm -Wl,--end-group -lmpi -lstdc++fsg++ -fdiagnostics-color=always -g '/thfs1/home/test653/shengjh/exam of CSRf1.cpp' -o '/thfs1/home/test653/shengjh/exam of CSRf1' -DAdd_ -DUSE_FORTRAN_UNDERSCORE -I/thfs1/software/eigen3/3.4.90-gcc9.3/include/eigen3 -I/thfs1/software/mpich/4.0.2-mpi-x-gcc9.3.0/include -I/thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/include -L/thfs1/software/mpich/4.0.2-mpi-x-gcc9.3.0/lib -L/thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/lib -L/thfs1/software/scalapack/2.2.2-gcc9.3.0-mpi-x/lib -L/thfs1/software/metis/5.1.0-gcc9.3.0/lib -L/thfs1/software/lapack/3.8.0-gcc9.3.0/lib -L/thfs1/software/blas/3.8.0-gcc9.3.0/lib -L/thfs1/software/openblas/0.3.30-gcc9.3.0/lib -Wl,--start-group -ldmumps -lmumps_common -lpord -lscalapack -lmetis -lopenblas -llapack -lgfortran -lm -Wl,--end-group -lmpi -lstdc++fs
/usr/bin/ld: /thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/lib/libdmumps.a(dmumps_c.o): in function `dmumps_set_tmp_ptr_c__':
mumps_c.c:(.text+0x44): undefined reference to `dmumps_set_tmp_ptr__'
/usr/bin/ld: /thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/lib/libdmumps.a(dmumps_c.o): in function `dmumps_c':
mumps_c.c:(.text+0x1db4): undefined reference to `dmumps_f77__'
collect2: error: ld returned 1 exit status在实际运行代码时出现了这些问题,头文件如下#include <iostream>
#define MUMPS_CALL
#define dmumps_set_tmp_ptr_ dmumps_set_tmp_ptr__
#define dmumps_f77_ dmumps_f77__
#include <vector>
#include <cmath>
#include <fstream>
#include <sstream>
#include <chrono>
#include <Eigen/Dense>
#include <Eigen/Sparse>
extern "C" {
#define MUMPS_CALL
#include "dmumps_c.h"
// 显式声明使用单下划线符号
void dmumps_f77_(DMUMPS_STRUC_C* id);
void dmumps_set_tmp_ptr_(DMUMPS_STRUC_C* id);
// 添加缺失的初始化函数声明
void dmumps_init_(DMUMPS_STRUC_C* id, int* comm_fortran);
}
using namespace std;
using namespace chrono;
using namespace Eigen;
typedef SparseMatrix<double, RowMajor> SparseMatrixR;
typedef complex<double> cd;
typedef SparseMatrix<cd, RowMajor> SparseMatrixC;
// MUMPS 预定义常量
#define JOB_INIT -1
#define JOB_ANALYZE -2
#define JOB_FACTORIZE -3
#define JOB_SOLVE -4
#define JOB_END -5
#ifndef USE_COMM_WORLD
#define USE_COMM_WORLD (-987654)
#endif,json如下{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ MUMPS build",
"command": "g++",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}",
"-DAdd_",
"-DUSE_FORTRAN_UNDERSCORE", // 关键添加
"-I/thfs1/software/eigen3/3.4.90-gcc9.3/include/eigen3",
"-I/thfs1/software/mpich/4.0.2-mpi-x-gcc9.3.0/include",
"-I/thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/include",
"-L/thfs1/software/mpich/4.0.2-mpi-x-gcc9.3.0/lib",
"-L/thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/lib",
"-L/thfs1/software/scalapack/2.2.2-gcc9.3.0-mpi-x/lib",
"-L/thfs1/software/metis/5.1.0-gcc9.3.0/lib",
"-L/thfs1/software/lapack/3.8.0-gcc9.3.0/lib",
"-L/thfs1/software/blas/3.8.0-gcc9.3.0/lib",
"-L/thfs1/software/openblas/0.3.30-gcc9.3.0/lib",
"-Wl,--start-group",
"-ldmumps",
"-lmumps_common",
"-lpord",
"-lscalapack",
"-lmetis",
"-lopenblas",
"-llapack",
"-lgfortran",
"-lm",
"-Wl,--end-group",
"-lmpi",
"-lstdc++fs" // 可能需要添加 C++ 文件系统库
],
"options": {
"cwd": "${fileDirname}",
"env": {
"PATH": "/thfs1/software/mpich/4.0.2-mpi-x-gcc9.3.0/bin:${env:PATH}",
"LD_LIBRARY_PATH": "/thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/lib:/thfs1/software/openblas/0.3.30-gcc9.3.0/lib:/thfs1/software/gcc/9.3.0/lib64:${env:LD_LIBRARY_PATH}"
}
},
"problemMatcher": ["$gcc"],
"group": "build"
}
],
"version": "2.0.0"
}{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++ 调试",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "C/C++: g++ MUMPS build",
"miDebuggerPath": "/usr/bin/gdb",
"setupCommands": [
{
"description": "启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/thfs1/software/eigen3/3.4.90-gcc9.3/include/eigen3",
"/thfs1/software/mpich/4.0.2-mpi-x-gcc9.3.0/include",
"/thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/include"
],
"defines": [],
"cStandard": "c17",
"cppStandard": "c++14",
"intelliSenseMode": "linux-clang-arm64"
}
],
"version": 4
}同时加载的模块如下 module list
Currently Loaded Modulefiles:
1) mpich/4.0.2-mpi-x-gcc9.3.0 3) openblas/0.3.30-gcc9.3.0 5) metis/5.1.0-gcc9.3.0 7) blas/3.8.0-gcc9.3.0
2) GCC/9.3.0(default) 4) scalapack/2.2.2-gcc9.3.0-mpi-x 6) lapack/3.8.0-gcc9.3.0
test653@ln0:~/shengjh$ which ld
/usr/bin/ld解决问题