Bytebase 3.8.0 - 显著优化 schema 同步/回滚兼容性

🔔 重大变更

  • 显著优化多数据库(MySQL/PostgreSQL/TiDB/SQL Server/Oracle)的 schema 同步/回滚兼容性,支持绝大多数常见数据库对象。

file

  • 下线工单订阅功能。

  • 将 SQL 审核中心更名为变更计划。

🎄 改进

  • 新增查询结果行数限制功能。

file

  • 新增多域名配置支持。

file

  • 简化默认值输入:不再区分表达式和值,统一通过文本输入框填写。

  • 在审批流程处展示全部审批人,且可悬停显示细节。

file

g++ -fdiagnostics-color=always -g &#39;/thfs1/home/test653/shengjh/exam of CSRf1.cpp&#39; -o &#39;/thfs1/home/test653/shengjh/exam of CSRf1&#39; -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 &#39;/thfs1/home/test653/shengjh/exam of CSRf1.cpp&#39; -o &#39;/thfs1/home/test653/shengjh/exam of CSRf1&#39; -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 &#39;/thfs1/home/test653/shengjh/exam of CSRf1.cpp&#39; -o &#39;/thfs1/home/test653/shengjh/exam of CSRf1&#39; -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__&#39;: mumps_c.c:(.text+0x44): undefined reference to `dmumps_set_tmp_ptr__&#39; /usr/bin/ld: /thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/lib/libdmumps.a(dmumps_c.o): in function `dmumps_c&#39;: mumps_c.c:(.text+0x1db4): undefined reference to `dmumps_f77__&#39; 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解决问题
08-16
在使用MUMPS库进行C++编译时,遇到链接错误如`undefined reference to &#39;dmumps_set_tmp_ptr__&#39;`和`dmumps_f77__&#39;`,通常是由于C++代码调用Fortran函数时符号名不匹配或未正确链接MUMPS及其依赖库(如BLAS、METIS等)所致。 ### 1. 符号名称匹配问题 Fortran编译器通常会对函数名进行转换,常见的方式包括小写加下划线(例如`dmumps_set_tmp_ptr`变为`dmumps_set_tmp_ptr_`或`dmumps_set_tmp_ptr__`),具体取决于编译器和平台。C++在调用这些函数时必须匹配其符号名,可以通过`extern "C"`声明并使用适当的符号名来解决。 例如,可以尝试在C++代码中声明这些函数如下: ```cpp extern "C" { void dmumps_set_tmp_ptr__(void** ptr); void dmumps_f77__(void** ptr); } ``` 如果不确定符号名的确切形式,可以通过`nm`命令检查MUMPS库中的符号,例如: ```bash nm libmumps_common.a | grep dmumps ``` ### 2. 链接顺序与库依赖 MUMPS依赖多个外部库,如BLAS、METIS、SCOTCH等。在链接时,确保这些库的顺序正确,通常需要将MUMPS库放在依赖库之前。例如,使用`g++`链接时可能需要类似以下命令: ```bash g++ -o my_program my_program.o -L/path/to/mumps/lib -lmumps_common -lmetis -lscotch -lblas -lgfortran ``` 如果使用的是并行版本的MUMPS(例如与MPI一起编译),还需要链接`-lmpiseq`或相关MPI库。 ### 3. 编译器与运行时选项 确保C++编译器和MUMPS的构建环境一致,例如是否使用了相同的Fortran编译器(如gfortran)和构建工具(如Makefile中的`CC`和`FC`设置)。此外,MUMPS的某些接口需要在编译时定义特定的宏,例如`-DAdd_`或`-DAdd__`,以匹配Fortran符号名的转换方式。 ### 4. 示例编译与链接命令 假设MUMPS已安装在`/usr/local/mumps`,并使用gfortran作为Fortran编译器,完整的编译和链接命令可能如下: ```bash g++ -c -I/usr/local/mumps/include my_program.cpp g++ -o my_program my_program.o -L/usr/local/mumps/lib -lmumps_common -lmetis -lscotch -lblas -lgfortran ``` 如果仍然遇到问题,可以尝试在链接命令中添加`-Wl,--trace`以查看链接器搜索的符号和库路径。 ### 5. 其他常见问题 - **未正确安装MUMPS**:确保MUMPS及其依赖库已正确安装,并且`libmumps_common.a`等文件存在。 - **静态库与共享库混淆**:确认编译时使用的是正确的库类型(静态或共享),并确保路径无误。 - **多线程支持**:如果使用多线程功能,可能需要添加`-fopenmp`或类似选项。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值