我在编译 ex11.cpp ( which will be given at the end) 的时候,使用编译命令 ./a11 (whose content will be given later) 会出一堆的错误,但是使用 a12 (最后给出)不会出错。 二者的差别是 tlu@linux-1482:~/proj/mpi/epetra> diff a12 a11 a11 < -lblas < -lcblas a12 > -lblas -lcblas
看在作编译命令的时候, -lblas -lcblas 在 SUSE linux 下要写在一起。
这样的事情在 Fedora Core 6 的机器没有出现。
a11 把分成两行写 出现的错误如下: /usr/local/lib/liblapack.a(sgeev.o): In function `sgeev_": sgeev.f:(.text+0x141a): undefined reference to `srot_" sgeev.f:(.text+0x180a): undefined reference to `srot_" /usr/local/lib/liblapack.a(sgeevx.o): In function `sgeevx_": sgeevx.f:(.text+0x1712): undefined reference to `srot_" sgeevx.f:(.text+0x1b7d): undefined reference to `srot_" /usr/local/lib/liblapack.a(sgetri.o): In function `sgetri_": sgetri.f:(.text+0x3b6): undefined reference to `sswap_" sgetri.f:(.text+0x40d): undefined reference to `sswap_" sgetri.f:(.text+0x45d): undefined reference to `sswap_" sgetri.f:(.text+0x4a7): undefined reference to `sswap_" sgetri.f:(.text+0x78c): undefined reference to `strsm_" /usr/local/lib/liblapack.a(sgglse.o): In function `sgglse_": sgglse.f:(.text+0x7b7): undefined reference to `strmv_" /usr/local/lib/liblapack.a(slahqr.o): In function `slahqr_": slahqr.f:(.text+0x161e): undefined reference to `srot_" slahqr.f:(.text+0x1695): undefined reference to `srot_" slahqr.f:(.text+0x1702): undefined reference to `srot_" /usr/local/lib/liblapack.a(slahr2.o): In function `slahr2_": slahr2.f:(.text+0x495): undefined reference to `strmv_" slahr2.f:(.text+0x67a): undefined reference to `strmv_" slahr2.f:(.text+0x7be): undefined reference to `strmv_" slahr2.f:(.text+0x912): undefined reference to `strmv_" slahr2.f:(.text+0xd27): undefined reference to `strmv_" /usr/local/lib/liblapack.a(slarf.o): In function `slarf_": slarf.f:(.text+0x149): undefined reference to `sger_" /usr/local/lib/liblapack.a(slatrs.o): In function `slatrs_": slatrs.f:(.text+0x1760): undefined reference to `strsv_" /usr/local/lib/liblapack.a(sporfs.o): In function `sporfs_": sporfs.f:(.text+0x4db): undefined reference to `ssymv_" /usr/local/lib/liblapack.a(spotrs.o): In function `spotrs_": spotrs.f:(.text+0x154): undefined reference to `strsm_" spotrs.f:(.text+0x1c0): undefined reference to `strsm_" spotrs.f:(.text+0x2b5): undefined reference to `strsm_" /usr/local/lib/liblapack.a(sspgv.o): In function `sspgv_": sspgv.f:(.text+0x312): undefined reference to `stpsv_" sspgv.f:(.text+0x374): undefined reference to `stpsv_" sspgv.f:(.text+0x3c5): undefined reference to `stpsv_" sspgv.f:(.text+0x460): undefined reference to `stpmv_" sspgv.f:(.text+0x4cc): undefined reference to `stpmv_" sspgv.f:(.text+0x513): undefined reference to `stpmv_" sspgv.f:(.text+0x574): undefined reference to `stpsv_" sspgv.f:(.text+0x5d4): undefined reference to `stpmv_" /usr/local/lib/liblapack.a(ssptrd.o): In function `ssptrd_": ssptrd.f:(.text+0x164): undefined reference to `sspmv_" ssptrd.f:(.text+0x209): undefined reference to `sspr2_" ssptrd.f:(.text+0x3c8): undefined reference to `sspmv_" ssptrd.f:(.text+0x4a8): undefined reference to `sspr2_" /usr/local/lib/liblapack.a(ssyevx.o): In function `ssyevx_": ssyevx.f:(.text+0x14d7): undefined reference to `sswap_" /usr/local/lib/liblapack.a(ssygv.o): In function `ssygv_": ssygv.f:(.text+0x448): undefined reference to `strsm_" /usr/local/lib/liblapack.a(ssytrd.o): In function `ssytrd_": ssytrd.f:(.text+0x3ae): undefined reference to `ssyr2k_" ssytrd.f:(.text+0x62b): undefined reference to `ssyr2k_" /usr/local/lib/liblapack.a(stgsja.o): In function `stgsja_": stgsja.f:(.text+0x669): undefined reference to `srot_" stgsja.f:(.text+0x6f2): undefined reference to `srot_" stgsja.f:(.text+0x753): undefined reference to `srot_" stgsja.f:(.text+0xa30): undefined reference to `srot_" stgsja.f:(.text+0xb06): undefined reference to `srot_" /usr/local/lib/liblapack.a(stgsja.o):stgsja.f:(.text+0xb8a): more undefined references to `srot_" follow /usr/local/lib/liblapack.a(strtri.o): In function `strtri_": strtri.f:(.text+0x4cb): undefined reference to `strsm_" strtri.f:(.text+0x761): undefined reference to `strsm_" /usr/local/lib/liblapack.a(strtrs.o): In function `strtrs_": strtrs.f:(.text+0x2f1): undefined reference to `strsm_" /usr/local/lib/liblapack.a(dgeev.o): In function `dgeev_": dgeev.f:(.text+0x1393): undefined reference to `drot_" dgeev.f:(.text+0x1776): undefined reference to `drot_" /usr/local/lib/liblapack.a(dgeevx.o): In function `dgeevx_": dgeevx.f:(.text+0x16d4): undefined reference to `drot_" dgeevx.f:(.text+0x1b38): undefined reference to `drot_" /usr/local/lib/liblapack.a(dgetri.o): In function `dgetri_": dgetri.f:(.text+0x3ac): undefined reference to `dswap_" dgetri.f:(.text+0x403): undefined reference to `dswap_" dgetri.f:(.text+0x453): undefined reference to `dswap_" dgetri.f:(.text+0x49d): undefined reference to `dswap_" dgetri.f:(.text+0x77d): undefined reference to `dtrsm_" /usr/local/lib/liblapack.a(dgglse.o): In function `dgglse_": dgglse.f:(.text+0x7b4): undefined reference to `dtrmv_" /usr/local/lib/liblapack.a(dlahqr.o): In function `dlahqr_": dlahqr.f:(.text+0x16e5): undefined reference to `drot_" dlahqr.f:(.text+0x175c): undefined reference to `drot_" dlahqr.f:(.text+0x17c9): undefined reference to `drot_" /usr/local/lib/liblapack.a(dlahr2.o): In function `dlahr2_": dlahr2.f:(.text+0x4a3): undefined reference to `dtrmv_" dlahr2.f:(.text+0x695): undefined reference to `dtrmv_" dlahr2.f:(.text+0x7d8): undefined reference to `dtrmv_" dlahr2.f:(.text+0x926): undefined reference to `dtrmv_" dlahr2.f:(.text+0xd48): undefined reference to `dtrmv_" /usr/local/lib/liblapack.a(dlarf.o): In function `dlarf_": dlarf.f:(.text+0x151): undefined reference to `dger_" /usr/local/lib/liblapack.a(dlarft.o): In function `dlarft_": dlarft.f:(.text+0x376): undefined reference to `dtrmv_" dlarft.f:(.text+0x7b1): undefined reference to `dtrmv_" /usr/local/lib/liblapack.a(dlatrs.o): In function `dlatrs_": dlatrs.f:(.text+0x17d9): undefined reference to `dtrsv_" /usr/local/lib/liblapack.a(dporfs.o): In function `dporfs_": dporfs.f:(.text+0x4de): undefined reference to `dsymv_" /usr/local/lib/liblapack.a(dpotrs.o): In function `dpotrs_": dpotrs.f:(.text+0x154): undefined reference to `dtrsm_" dpotrs.f:(.text+0x1c0): undefined reference to `dtrsm_" dpotrs.f:(.text+0x2b5): undefined reference to `dtrsm_" /usr/local/lib/liblapack.a(dspgv.o): In function `dspgv_": dspgv.f:(.text+0x312): undefined reference to `dtpsv_" dspgv.f:(.text+0x374): undefined reference to `dtpsv_" dspgv.f:(.text+0x3c5): undefined reference to `dtpsv_" dspgv.f:(.text+0x460): undefined reference to `dtpmv_" dspgv.f:(.text+0x4cc): undefined reference to `dtpmv_" dspgv.f:(.text+0x513): undefined reference to `dtpmv_" dspgv.f:(.text+0x574): undefined reference to `dtpsv_" dspgv.f:(.text+0x5d4): undefined reference to `dtpmv_" /usr/local/lib/liblapack.a(dsptrd.o): In function `dsptrd_": dsptrd.f:(.text+0x174): undefined reference to `dspmv_" dsptrd.f:(.text+0x21a): undefined reference to `dspr2_" dsptrd.f:(.text+0x3df): undefined reference to `dspmv_" dsptrd.f:(.text+0x4c0): undefined reference to `dspr2_" /usr/local/lib/liblapack.a(dsyevx.o): In function `dsyevx_": dsyevx.f:(.text+0x14ca): undefined reference to `dswap_" /usr/local/lib/liblapack.a(dsygv.o): In function `dsygv_": dsygv.f:(.text+0x448): undefined reference to `dtrsm_" /usr/local/lib/liblapack.a(dsytrd.o): In function `dsytrd_": dsytrd.f:(.text+0x3b1): undefined reference to `dsyr2k_" dsytrd.f:(.text+0x62e): undefined reference to `dsyr2k_" /usr/local/lib/liblapack.a(dtgsja.o): In function `dtgsja_": dtgsja.f:(.text+0x66e): undefined reference to `drot_" dtgsja.f:(.text+0x6f7): undefined reference to `drot_" dtgsja.f:(.text+0x758): undefined reference to `drot_" dtgsja.f:(.text+0xa40): undefined reference to `drot_" dtgsja.f:(.text+0xb10): undefined reference to `drot_" /usr/local/lib/liblapack.a(dtgsja.o):dtgsja.f:(.text+0xb99): more undefined references to `drot_" follow /usr/local/lib/liblapack.a(dtrtri.o): In function `dtrtri_": dtrtri.f:(.text+0x4cb): undefined reference to `dtrsm_" dtrtri.f:(.text+0x761): undefined reference to `dtrsm_" /usr/local/lib/liblapack.a(dtrtrs.o): In function `dtrtrs_": dtrtrs.f:(.text+0x2f3): undefined reference to `dtrsm_" /usr/local/lib/liblapack.a(sbdsqr.o): In function `sbdsqr_": sbdsqr.f:(.text+0x7cb): undefined reference to `sswap_" sbdsqr.f:(.text+0x82d): undefined reference to `sswap_" sbdsqr.f:(.text+0x87c): undefined reference to `sswap_" sbdsqr.f:(.text+0xcec): undefined reference to `sswap_" sbdsqr.f:(.text+0xd34): undefined reference to `sswap_" sbdsqr.f:(.text+0x1af5): undefined reference to `srot_" sbdsqr.f:(.text+0x1b5d): undefined reference to `srot_" sbdsqr.f:(.text+0x1ba0): undefined reference to `srot_" /usr/local/lib/liblapack.a(sstedc.o): In function `sstedc_": sstedc.f:(.text+0xd83): undefined reference to `sswap_" /usr/local/lib/liblapack.a(ssteqr.o): In function `ssteqr_": ssteqr.f:(.text+0x1206): undefined reference to `sswap_" /usr/local/lib/liblapack.a(dbdsqr.o): In function `dbdsqr_": dbdsqr.f:(.text+0x802): undefined reference to `dswap_" dbdsqr.f:(.text+0x864): undefined reference to `dswap_" dbdsqr.f:(.text+0x8b3): undefined reference to `dswap_" dbdsqr.f:(.text+0xd8a): undefined reference to `dswap_" dbdsqr.f:(.text+0xdd2): undefined reference to `dswap_" dbdsqr.f:(.text+0x1c92): undefined reference to `drot_" dbdsqr.f:(.text+0x1cfa): undefined reference to `drot_" dbdsqr.f:(.text+0x1d3d): undefined reference to `drot_" /usr/local/lib/liblapack.a(dstedc.o): In function `dstedc_": dstedc.f:(.text+0xd54): undefined reference to `dswap_" /usr/local/lib/liblapack.a(dsteqr.o): In function `dsteqr_": dsteqr.f:(.text+0x12e7): undefined reference to `dswap_" /usr/local/lib/liblapack.a(sgebak.o): In function `sgebak_": sgebak.f:(.text+0x536): undefined reference to `sswap_" sgebak.f:(.text+0x5ae): undefined reference to `sswap_" /usr/local/lib/liblapack.a(sgebal.o): In function `sgebal_": sgebal.f:(.text+0x3ff): undefined reference to `sswap_" sgebal.f:(.text+0x44d): undefined reference to `sswap_" /usr/local/lib/liblapack.a(sgeqpf.o): In function `sgeqpf_": sgeqpf.f:(.text+0x168): undefined reference to `sswap_" /usr/local/lib/liblapack.a(sgeqpf.o):sgeqpf.f:(.text+0x3b5): more undefined references to `sswap_" follow /usr/local/lib/liblapack.a(slaexc.o): In function `slaexc_": slaexc.f:(.text+0x822): undefined reference to `srot_" slaexc.f:(.text+0x895): undefined reference to `srot_" slaexc.f:(.text+0xc94): undefined reference to `srot_" slaexc.f:(.text+0x1363): undefined reference to `srot_" slaexc.f:(.text+0x13c7): undefined reference to `srot_" /usr/local/lib/liblapack.a(slaexc.o):slaexc.f:(.text+0x142e): more undefined references to `srot_" follow /usr/local/lib/liblapack.a(slarft.o): In function `slarft_": slarft.f:(.text+0x35d): undefined reference to `strmv_" slarft.f:(.text+0x764): undefined reference to `strmv_" /usr/local/lib/liblapack.a(slarfx.o): In function `slarfx_": slarfx.f:(.text+0x164): undefined reference to `sger_" /usr/local/lib/liblapack.a(slasy2.o): In function `slasy2_": slasy2.f:(.text+0x545): undefined reference to `sswap_" slasy2.f:(.text+0x5c2): undefined reference to `sswap_" /usr/local/lib/liblapack.a(slatrd.o): In function `slatrd_": slatrd.f:(.text+0x33c): undefined reference to `ssymv_" slatrd.f:(.text+0x6e7): undefined reference to `ssymv_" /usr/local/lib/liblapack.a(spptrf.o): In function `spptrf_": spptrf.f:(.text+0x179): undefined reference to `stpsv_" spptrf.f:(.text+0x2f2): undefined reference to `sspr_" /usr/local/lib/liblapack.a(sspgst.o): In function `sspgst_": sspgst.f:(.text+0x16a): undefined reference to `stpmv_" sspgst.f:(.text+0x1f7): undefined reference to `sspr2_" sspgst.f:(.text+0x3f1): undefined reference to `sspmv_" sspgst.f:(.text+0x448): undefined reference to `stpmv_" sspgst.f:(.text+0x520): undefined reference to `stpsv_" sspgst.f:(.text+0x580): undefined reference to `sspmv_" sspgst.f:(.text+0x7a1): undefined reference to `sspr2_" sspgst.f:(.text+0x82b): undefined reference to `stpsv_" /usr/local/lib/liblapack.a(ssygst.o): In function `ssygst_": ssygst.f:(.text+0x4c5): undefined reference to `ssyr2k_" ssygst.f:(.text+0x83f): undefined reference to `ssyr2k_" ssygst.f:(.text+0xb95): undefined reference to `strsm_" ssygst.f:(.text+0xd1d): undefined reference to `ssyr2k_" ssygst.f:(.text+0xe9d): undefined reference to `strsm_" ssygst.f:(.text+0x105c): undefined reference to `strsm_" ssygst.f:(.text+0x11b0): undefined reference to `ssyr2k_" ssygst.f:(.text+0x1307): undefined reference to `strsm_" /usr/local/lib/liblapack.a(ssytd2.o): In function `ssytd2_": ssytd2.f:(.text+0x1a4): undefined reference to `ssymv_" ssytd2.f:(.text+0x272): undefined reference to `ssyr2_" ssytd2.f:(.text+0x49c): undefined reference to `ssymv_" ssytd2.f:(.text+0x5cb): undefined reference to `ssyr2_" /usr/local/lib/liblapack.a(strti2.o): In function `strti2_": strti2.f:(.text+0x159): undefined reference to `strmv_" strti2.f:(.text+0x1f6): undefined reference to `strmv_" strti2.f:(.text+0x30a): undefined reference to `strmv_" /usr/local/lib/liblapack.a(dgebak.o): In function `dgebak_": dgebak.f:(.text+0x539): undefined reference to `dswap_" dgebak.f:(.text+0x5b1): undefined reference to `dswap_" /usr/local/lib/liblapack.a(dgebal.o): In function `dgebal_": dgebal.f:(.text+0x431): undefined reference to `dswap_" dgebal.f:(.text+0x47f): undefined reference to `dswap_" /usr/local/lib/liblapack.a(dgeqpf.o): In function `dgeqpf_": dgeqpf.f:(.text+0x159): undefined reference to `dswap_" /usr/local/lib/liblapack.a(dgeqpf.o):dgeqpf.f:(.text+0x47b): more undefined references to `dswap_" follow /usr/local/lib/liblapack.a(dlaexc.o): In function `dlaexc_": dlaexc.f:(.text+0x81c): undefined reference to `drot_" dlaexc.f:(.text+0x88f): undefined reference to `drot_" dlaexc.f:(.text+0xcbd): undefined reference to `drot_" dlaexc.f:(.text+0x13d1): undefined reference to `drot_" dlaexc.f:(.text+0x1435): undefined reference to `drot_" /usr/local/lib/liblapack.a(dlaexc.o):dlaexc.f:(.text+0x149d): more undefined references to `drot_" follow /usr/local/lib/liblapack.a(dlarfx.o): In function `dlarfx_": dlarfx.f:(.text+0x16f): undefined reference to `dger_" /usr/local/lib/liblapack.a(dlasy2.o): In function `dlasy2_": dlasy2.f:(.text+0x5a5): undefined reference to `dswap_" dlasy2.f:(.text+0x61d): undefined reference to `dswap_" /usr/local/lib/liblapack.a(dlatrd.o): In function `dlatrd_": dlatrd.f:(.text+0x342): undefined reference to `dsymv_" dlatrd.f:(.text+0x6ef): undefined reference to `dsymv_" /usr/local/lib/liblapack.a(dpptrf.o): In function `dpptrf_": dpptrf.f:(.text+0x16f): undefined reference to `dtpsv_" dpptrf.f:(.text+0x2fb): undefined reference to `dspr_" /usr/local/lib/liblapack.a(dspgst.o): In function `dspgst_": dspgst.f:(.text+0x16e): undefined reference to `dtpmv_" dspgst.f:(.text+0x201): undefined reference to `dspr2_" dspgst.f:(.text+0x40d): undefined reference to `dspmv_" dspgst.f:(.text+0x464): undefined reference to `dtpmv_" dspgst.f:(.text+0x53f): undefined reference to `dtpsv_" dspgst.f:(.text+0x59f): undefined reference to `dspmv_" dspgst.f:(.text+0x7d0): undefined reference to `dspr2_" dspgst.f:(.text+0x85d): undefined reference to `dtpsv_" /usr/local/lib/liblapack.a(dsygst.o): In function `dsygst_": dsygst.f:(.text+0x4c5): undefined reference to `dsyr2k_" dsygst.f:(.text+0x83f): undefined reference to `dsyr2k_" dsygst.f:(.text+0xb95): undefined reference to `dtrsm_" dsygst.f:(.text+0xd1d): undefined reference to `dsyr2k_" dsygst.f:(.text+0xe9d): undefined reference to `dtrsm_" dsygst.f:(.text+0x105c): undefined reference to `dtrsm_" dsygst.f:(.text+0x11b0): undefined reference to `dsyr2k_" dsygst.f:(.text+0x1307): undefined reference to `dtrsm_" /usr/local/lib/liblapack.a(dsytd2.o): In function `dsytd2_": dsytd2.f:(.text+0x1a9): undefined reference to `dsymv_" dsytd2.f:(.text+0x278): undefined reference to `dsyr2_" dsytd2.f:(.text+0x4a2): undefined reference to `dsymv_" dsytd2.f:(.text+0x5d8): undefined reference to `dsyr2_" /usr/local/lib/liblapack.a(dtrti2.o): In function `dtrti2_": dtrti2.f:(.text+0x15e): undefined reference to `dtrmv_" dtrti2.f:(.text+0x209): undefined reference to `dtrmv_" dtrti2.f:(.text+0x32e): undefined reference to `dtrmv_" /usr/local/lib/liblapack.a(slaed2.o): In function `slaed2_": slaed2.f:(.text+0x1229): undefined reference to `srot_" /usr/local/lib/liblapack.a(slaed8.o): In function `slaed8_": slaed8.f:(.text+0x12bc): undefined reference to `srot_" /usr/local/lib/liblapack.a(slaeda.o): In function `slaeda_": slaeda.f:(.text+0x450): undefined reference to `srot_" slaeda.f:(.text+0x4c1): undefined reference to `srot_" /usr/local/lib/liblapack.a(dlaed2.o): In function `dlaed2_": dlaed2.f:(.text+0x12b4): undefined reference to `drot_" /usr/local/lib/liblapack.a(dlaed8.o): In function `dlaed8_": dlaed8.f:(.text+0x1343): undefined reference to `drot_" /usr/local/lib/liblapack.a(dlaeda.o): In function `dlaeda_": dlaeda.f:(.text+0x431): undefined reference to `drot_" dlaeda.f:(.text+0x4a5): undefined reference to `drot_" /usr/local/lib/liblapack.a(ssygs2.o): In function `ssygs2_": ssygs2.f:(.text+0x1a0): undefined reference to `strmv_" ssygs2.f:(.text+0x248): undefined reference to `ssyr2_" ssygs2.f:(.text+0x439): undefined reference to `strmv_" ssygs2.f:(.text+0x4e8): undefined reference to `ssyr2_" ssygs2.f:(.text+0x7cf): undefined reference to `ssyr2_" ssygs2.f:(.text+0x88f): undefined reference to `strsv_" ssygs2.f:(.text+0xaab): undefined reference to `ssyr2_" ssygs2.f:(.text+0xb64): undefined reference to `strsv_" /usr/local/lib/liblapack.a(dsygs2.o): In function `dsygs2_": dsygs2.f:(.text+0x1a0): undefined reference to `dtrmv_" dsygs2.f:(.text+0x248): undefined reference to `dsyr2_" dsygs2.f:(.text+0x43a): undefined reference to `dtrmv_" dsygs2.f:(.text+0x4e9): undefined reference to `dsyr2_" dsygs2.f:(.text+0x7cf): undefined reference to `dsyr2_" dsygs2.f:(.text+0x88f): undefined reference to `dtrsv_" dsygs2.f:(.text+0xab1): undefined reference to `dsyr2_" dsygs2.f:(.text+0xb6a): undefined reference to `dtrsv_" collect2: ld returned 1 exit status
// set the elements of the vector for( int i=0 ; i = 1.0, x=0.0;
Epetra_SerialDenseMatrix A, A2; A.Shape( NumRows, NumRows ); A2.Shape( NumRows, NumRows ); // A2 is a copy of A
// Hilbert matrix (ill-conditioned) for( int i=0 ; i for( int j=0 ; j A(i,j) = 1.0/(i+j+2);
cout<< A;
// set up the solver Epetra_SerialDenseSolver Problem; Problem.SetMatrix( A ); Problem.SetVectors( x, b );
A2 = A; // we make a copy of A because Problem.Solve() will // overwrite A with its LU decomposition. Try with // cout << A after the following invocation
b.Multiply("N","N",1.0, A2, x, 0.0);
cout << "A * x =
" << b;
double rcond; Problem.ReciprocalConditionEstimate(rcond); cout << "The (estimated) condition number of A is " << 1/rcond << endl;
Problem.SetMatrix( A2 ); Problem.Invert(); cout << "The inverse of A is
"; cout << A2;